WPF MVVM:解耦视图绑定和动态设置绑定

时间:2013-10-11 20:51:54

标签: wpf mvvm

我正在编写一个遵循MVVM结构的相当大的WPF应用程序。我想基本上以两种模式运行我的UI。第一个是正常的日常运营模式。第二个是我一直想知道的一个......我希望能够在“配置”模式下运行它,用户将看到UI与正常情况大致相同的方式模式,除了当它们悬停在(或可能单击)控件上时会出现一个弹出窗口。此弹出窗口将允许用户更改与该控件相关的某些绑定。我不想暴露每个属性(或每个控件)。

例如: 有一个TextBlock,它具有与压力信号的绑定,现在用户想要将此绑定更改为温度信号。他们可以在配置模式下启动UI,使用TextBlock导航到屏幕,选择它,然后在弹出窗口中看到Text属性,然后可以将它们更改为新的临时信号。这是一个简化的例子,但基本上我想要做的。

这可能吗?请记住,UI必须写入View(XAML)。任何帮助表示赞赏。

P.S。 这将是一个非常有用但很少使用的功能。可能有两个项目可以使相同的视图,但不同的ViewModel和模型... ...至少这是我一直在想的可能需要的项目。即使在使用配置模式UI后必须重新编译正常模式UI。

1 个答案:

答案 0 :(得分:0)

每个弹出窗口都应该有自己的VM(或者如果由于每个弹出窗口的属性很少而被证明是一种过度杀伤)它们可以共享,并通过消息总线与主VM通信。

将您的绑定存储为用户设置,当消息从弹出窗口VM到达时,将新绑定作为有效负载,主VM将获得该有效负载并通过简单地调用Settings.Default.Save();来保存适当的用户设置

根据您的描述,没有理由让它比IMO更复杂......