我在WPF中为逻辑电路模拟器设计UI。我希望我的应用程序支持各种行为,具体取决于当前的操作模式,如选择模式(橡皮带选择),组件放置模式,接线模式,交互模式等。我考虑在我的ViewModel中使用状态模式并将行为封装在与操作相对应的状态中模式。
我的麻烦在于反映视图中的这些变化。我希望每个模式订阅不同的鼠标事件(选择是鼠标按下,鼠标移动,鼠标向上;放置是鼠标输入,鼠标移动,鼠标离开)。我可以将其封装在通用行为中,然后以某种方式在运行时切换行为吗?我应该使用附加属性吗?或者也许是定制控制? MVVM的做法是什么?
答案 0 :(得分:0)
不同的行为是仅与鼠标事件相关联,而UserControl的XAML是否始终相同?
如果答案是肯定的,那么您可以实现附加到您想要在所有方案中管理的所有鼠标事件的单个行为,并将当前方案存储在UserControl的变量中。
这样做,您的自定义行为可以决定是否调用特定的ICommand
,基于指示当前场景的UserControl变量的值。