我是MVVM的新手。我有一个窗口Demo.xaml,它有菜单,在菜单下我有子菜单。我想打开子菜单窗口,即使用MVVM方法点击子菜单时的Test.Xaml。 我做了一个测试窗口的对象,但它没有显示" Show"属性。 我也试过使用委托命令,但我失败了。 我怎样才能做到这一点?
答案 0 :(得分:0)
解决问题最常见的MVVM方法是将子菜单项的“Command”绑定到ViewModel中实现ICommand的属性。然后,在命令的执行中,您可以打开您选择的窗口。
答案 1 :(得分:0)
您需要使用ICommand
- 使用RelayCommand
时使用MVVM是最佳做法。
请参阅下面的示例:
<强> MainWindow.xaml 强>
<MenuItem Header="Settings" Command="{Binding CmdOpenSetting}" >
<MenuItem.Icon>
<Image Source="..\Resources\if_Gnome-Preferences-System.png" Height="16" Width="16" Margin="0,0,-5,0" />
</MenuItem.Icon>
</MenuItem>
<强> MainWindow.xaml.cs 强>
public MainWindow()
{
InitializeComponent();
//Singelton not needed
MainWindowViewModel.Instance = new MainWindowViewModel();
this.DataContext = MainWindowViewModel.Instance;
//Also works
this.DataContext = new MainWindowViewModel();
}
<强> MainWindowViewModel.cs 强>
private RelayCommand _commandOpenSettings;
public ICommand CmdOpenSetting
{
get
{
if(_commandOpenSettings.IsNull())
{
_commandOpenSettings = new RelayCommand(param => OpenSettings());
}
return _commandOpenSettings;
}
}
注意您可能需要根据CmdOpenSetting
的实施情况调整RelayCommand