【发布时间】:2013-10-12 06:40:56
【问题描述】:
我正在编写一个相当大的 WPF 应用程序,它遵循 MVVM 结构。我想以两种模式运行我的 UI。第一个是正常的日常操作模式。第二个是我一直想知道的...我希望能够在“配置”模式下运行它,在这种模式下,用户将看到 UI 的方式或多或少与正常方式相同模式,除了当他们将鼠标悬停在(或单击)控件时会出现一个弹出窗口。此弹出窗口将允许用户更改与该控件相关的某些绑定。我不想公开每个属性(或每个控件)。
例如: 有一个与压力信号绑定的 TextBlock,现在用户想要将此绑定更改为温度信号。他们可以在配置模式下启动 UI,使用 TextBlock 导航到屏幕,选择它,然后在弹出窗口中查看 Text 属性,然后他们可以将其更改为新的临时信号。这是一个简化的示例,但基本上是我想要做的。
这可能吗?请记住,UI 必须写入视图 (XAML)。任何帮助表示赞赏。
附: 这将是一个非常有用但很少使用的功能。也许有 2 个项目使用相同的 View 但不同的 ViewModel 和 Model 是可以的……至少我一直认为这可能是需要的。即使在使用配置模式 UI 后必须重新编译正常模式 UI。
【问题讨论】:
-
在 ViewModel 级别处理此问题,而不是为此尝试破解 UI。您需要抽象您的视图并创建这些“小部件”的模型表示。 UI 不能持久化(例如,在数据库中)。所以你需要别的东西。
-
你是说你想改变绑定,让它永久绑定到别的东西上?
-
否则,将您的 XAML 文件与应用程序一起部署(而不是编译到)并在运行时使用
XamlReader.Load()或其他内容加载它们,然后您可以修改 XAML 文件(在磁盘上)。