在我看來,我有:WPF關閉與MVVM從視圖模型類窗口
<Button Grid.Column="2" x:Name="BackBtn" Content="Powrót" Command="{Binding ClickCommand}" Width="100" Margin="10" HorizontalAlignment="Right"/>
然後,在視圖模型:
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()(關於什麼對象?)並且它「不起作用」:它是否拋出異常?編譯器是否告訴你它不是你試圖調用它的神祕祕密未知對象的成員?或者是什麼?事情可以以任何方式「不起作用」。說哪個。 –
不起作用意味着什麼也沒有發生 –