MVVM Light - 在PropertyChange

时间:2015-11-02 14:44:51

标签: wpf mvvm-light

我想根据选中的复选框更改.ico:

        <MenuItem Header="_Online" Command="{Binding SetStatusOnlineCommand}"  />
        <MenuItem Header="_Away" Command="{Binding SetStatusAwayCommand}" />
        <MenuItem Header="_Offline" Command="{Binding SetStatusOfflineCommand}" />

由于我使用的是MVVM Light及其SimpleIoC,我不知道如何实现这一目标。

我的ViewModel不知道它所代表的窗口,因此我无法更改窗口的图标。我的窗口通过localter获取XAML中的DataContext:

<DockPanel x:Name="MainPanel"  DataContext="{Binding MainViewModel, Source={StaticResource Locator}}">

我想在ViewModel中创建一个PropertyChangeEvent。窗口注册到这个事件,但由于我通过我的XAML中的定位器进行实例化,我无法从我的窗口访问它,或者我错了?!

我可以使用OnChange-Events ...然后我将打破MVVM模式。有没有人有一个好主意来实现这个目标?!

1 个答案:

答案 0 :(得分:2)

您可以将窗口作为命令参数传递:

<MenuItem Header="_Online" Command="{Binding SetStatusOnlineCommand}"
CommandParameter="{Binding ElementName=YourWindowName}" />

在此解释:https://stackoverflow.com/a/16195267/5147720