我的应用程序主页面是由其他窗口组成的。其中一个是我的应用程序的设置,通过单击主页面上的按钮打开/关闭。此窗口具有“视图模型”以及“保存”和“取消”两个按钮。按取消用于恢复以前的设置,保存只存储它们。现在,当我使用主菜单关闭属性时,我希望调用取消,并且想知道最好的方法。
所以在我的视图模型中,我有类似的东西:
public RelayCommand CancelRC { get; private set; }
public PropertiesViewModel
{
CancelRC = new RelayCommand(RestoreProperties)
}
private RestoreProperties
{
// Restore
}
在我的MainPage.xaml.cs
中private void Properties_Click(object sender, RoutedEventArgs e)
{
if (PropertiesForm.Visibility == Visibility.Collapsed)
{
PropertiesForm.Visibility = Visibility.Visible;
PropertiesForm.IsSelected = true;
}
else
{
PropertiesForm.Visibility = Visibility.Collapsed;
IncidentForm.IsSelected = true;
// Send a Cancel relaycommand to the Properties View Model?
}
}
对我来说显而易见的解决方案是手动触发RelayCommand,但我不确定这是否是最合适的方法,我不知道你怎么会触发它。所以这是做到这一点的方式,还是有更优选的方式来做这样的事情?
同样是手动隐藏并通过主页面显示属性,这是最好的方法吗?
答案 0 :(得分:1)
删除Properties_Click方法,并在xaml中执行以下操作:
<Button Command="{Binding CancelRC}">Properties</Button>
这将导致按钮使用RelayCommand.CanExecute和RelayCommand.Execute,而无需使用代码。代码假定窗口datacontext设置为View Model。