【发布时间】:2017-03-03 17:20:28
【问题描述】:
在我看来,我有:
<Button Grid.Column="2" x:Name="BackBtn" Content="Powrót" Command="{Binding ClickCommand}" Width="100" Margin="10" HorizontalAlignment="Right"/>
然后,在 ViewModel 中:
public ICommand ClickCommand
{
get
{
return _clickCommand ?? (_clickCommand = new CommandHandler(() => MyAction(), _canExecute));
}
}
private void MyAction()
{
MainWindow mainWindow = new MainWindow(); // I want to open new window but how to close current?
mainWindow.Show();
// how to close old window ?
}
namespace FirstWPF
{
public class CommandHandler : ICommand
{
private Action _action;
private bool _canExecute;
public CommandHandler(Action action, bool canExecute)
{
_action = action;
_canExecute = canExecute;
}
public bool CanExecute(object parameter)
{
return _canExecute;
}
public event EventHandler CanExecuteChanged;
public void Execute(object parameter)
{
_action();
}
}
}
我不知道如何解决这个问题,我想关闭当前窗体 ViewModel,因为我正在打开一个新窗体。
【问题讨论】:
-
您是说要在打开新窗口之前致电
Application.Current.MainWindow.Close();? -
只是一个旁注——说一些“不起作用”是没有用的。这可能意味着任何事情。您尝试调用 Close() (在什么对象上?)它“不起作用”:它是否引发了异常?编译器是否告诉你它不是你试图调用它的神秘秘密未知对象的成员?要不然是啥?事情可能以多种方式“不起作用”。说哪个。
-
不工作意味着什么都没有发生
-
你的 CommandHandler 类是如何实现的?
-
这对你来说可能也很有趣:stackoverflow.com/questions/419596/…