【发布时间】:2015-11-02 14:44:50
【问题描述】:
我想根据选中的复选框更改 .ico:
<MenuItem Header="_Online" Command="{Binding SetStatusOnlineCommand}" />
<MenuItem Header="_Away" Command="{Binding SetStatusAwayCommand}" />
<MenuItem Header="_Offline" Command="{Binding SetStatusOfflineCommand}" />
由于我使用的是 MVVM Light 并且它是 SimpleIoC,我不知道如何实现这一点。
我的 ViewModel 不知道它所代表的窗口,因此我无法更改窗口的图标。我的窗口通过本地程序在 XAML 中获取 DataContext:
<DockPanel x:Name="MainPanel" DataContext="{Binding MainViewModel, Source={StaticResource Locator}}">
我想在我的 ViewModel 中创建一个 PropertyChangeEvent。 Window 注册到此事件,但由于我通过 XAML 中的 Locator 实例化,我无法从我的 Window 访问它,还是我错了?!
我可以使用 OnChange-Events ...但我会打破 MVVM 模式。有没有人有一个好主意来实现这一点?!
【问题讨论】:
-
看起来是发布-订阅者模式的完美用例:您的命令发送消息;您的 Windows 订阅此消息并采取相应措施。
-
我将窗口的
Icon属性绑定到视图模型中的Status属性,并使用转换器或数据触发器根据该属性的值选择适当的图标。
标签: wpf mvvm-light