Wpf MVVM Light-获取窗口实例以在PropertyChange之后设置图标
我想根据选中的复选框更改.ico:Wpf MVVM Light-获取窗口实例以在PropertyChange之后设置图标,wpf,mvvm-light,Wpf,Mvvm Light,我想根据选中的复选框更改.ico: <MenuItem Header="_Online" Command="{Binding SetStatusOnlineCommand}" /> <MenuItem Header="_Away" Command="{Binding SetStatusAwayCommand}" /> <MenuItem Header="_Offline" Command="{Binding SetS
<MenuItem Header="_Online" Command="{Binding SetStatusOnlineCommand}" />
<MenuItem Header="_Away" Command="{Binding SetStatusAwayCommand}" />
<MenuItem Header="_Offline" Command="{Binding SetStatusOfflineCommand}" />
因为我使用的是MVVM Light,而且它是SimpleIoC,所以我不知道如何实现这一点
我的ViewModel不知道它所代表的窗口,因此我无法更改窗口的图标。我的窗口通过localter获取XAML中的it数据上下文:
<DockPanel x:Name="MainPanel" DataContext="{Binding MainViewModel, Source={StaticResource Locator}}">
我想在ViewModel中创建PropertyChangeEvent。窗口注册到此事件,但由于我是通过XAML中的定位器实例化的,所以我无法从窗口访问它,还是我错了
我可以用OnChange事件。。。但接下来我将打破MVVM模式。有人有好主意来实现这个吗 您可以将窗口作为命令参数传递:
<MenuItem Header="_Online" Command="{Binding SetStatusOnlineCommand}"
CommandParameter="{Binding ElementName=YourWindowName}" />
此处解释:看起来是发布订户模式的完美用例:您的命令发送消息;您的Windows订阅此消息并相应地执行操作。我会将窗口的
图标
属性绑定到视图模型中的状态
属性,并使用转换器或数据触发器根据该属性的值选择适当的图标。谢谢!工作完美!