我有一个基本上运行计时器的窗口.当计时器达到0时,我想将窗口置于前面,以便它可见并且不会隐藏在其他应用程序后面.
从我可以收集的内容中我只需要调用window.activate()来完成此操作但是使用mvvm我的视图模型没有对窗口的引用.
是否可以Button在Window不添加代码隐藏事件的情况下将a 绑定到Close ?
<Button Content="OK" Command="{Binding CloseWithSomeKindOfTrick}" />
Run Code Online (Sandbox Code Playgroud)
代替以下XAML:
<Button Content="OK" Margin="0,8,0,0" Click="Button_Click">
Run Code Online (Sandbox Code Playgroud)
后面有代码:
private void Button_Click(object sender, RoutedEventArgs e)
{
Close();
}
Run Code Online (Sandbox Code Playgroud)
谢谢!
我正在使用MVVM,我知道数据的通信是View <=> ViewModel <=> Model.
ViewModel可以使用双向绑定与View进行交互.
但是现在我有一个LoginView(在Window中),如果登录成功将在ViewModel中检查.
当它失败时,它应该告诉窗口关闭.但是......怎么样?ViewModel不应该知道View ....
在我看来,我有:
<Button Grid.Column="2" x:Name="BackBtn" Content="Powrót" Command="{Binding ClickCommand}" Width="100" Margin="10" HorizontalAlignment="Right"/>
Run Code Online (Sandbox Code Playgroud)
然后,在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)
{ …Run Code Online (Sandbox Code Playgroud)