我有一個Prism模塊化的應用程序。顯示一個簡單的窗口(shell)。該shell包含一個任務欄圖標,用於調用切換窗口可見性的命令。單擊TaskbarIcon將創建一個新的殼體實例,而不是切換原始殼體的可見性。有人知道我的代碼爲什麼不在第一個shell上調用方法嗎?切換窗口的可見性instanciates新窗口
我的引導程序
protected override DependencyObject CreateShell()
{
var shell = ServiceLocator.Current.GetInstance<Shell>();
RegisterTypeIfMissing(typeof(Shell), typeof(Shell), true);
return shell;
}
protected override void InitializeShell()
{
var mainWindow = (Shell)this.Shell;
var regionManager = ServiceLocator.Current.GetInstance<IRegionManager>();
Application.Current.MainWindow = mainWindow;
mainWindow.Show();
}
我taskbarIcon
<tb:TaskbarIcon
Name="ToolbarIcon"
IconSource="/Resources/images/icon.ico"
ToolTipText="Some text"
LeftClickCommand="{StaticResource ShowWindowCommand}"/>
ShowWindowCommand
public class ShowWindowCommand : ICommand
{
public void Execute(object parameter)
{
ServiceLocator.Current.GetInstance<Shell>().toggleVisibility();
}
public bool CanExecute(object parameter)
{
return true;
}
public event EventHandler CanExecuteChanged;
}
Shell.togglingVisibility()
public void toggleVisibility()
{
if (this.Visibility == System.Windows.Visibility.Visible){
this.Visibility = System.Windows.Visibility.Collapsed;
}
else
{
this.Visibility = System.Windows.Visibility.Visible;
}
}
我現在使用 「((Shell)Application.Current.MainWindow).toggleVisibility();」 在我的Command類中。它的作用像一個魅力,但我想知道第一種方法的錯誤。 – Tenobi