|
|
1
9
本文讨论了解决问题的方法。 article . 基本思想是创建一个静态(C)类的ViewModel元数据集,该元数据集包含ViewModel类的属性的字符串值,然后可以在XAML中使用这些属性。本文解释了如何使用T4文本生成来创建这些静态元数据类。您可以使用任何您喜欢的代码生成工具。 所以你的虚拟机有以下功能:
代码生成将创建:
然后在XAML中,将命名空间添加到XAML,并将控件绑定到元数据类
如果使用类似的加载项 resharper 然后,它将为您提供静态类属性的智能感知,还因为您正在引用静态类中的确切属性,当静态类重新生成时,不应编译XAML。 它相当光滑,我认为它很棒,它有机会让大多数人保持清醒,但你的里程数可能会有所不同。:) 编辑: 顺便说一下,我不买“视图模型与视图紧密耦合”。在我看来,观点和他们的观点模型是密不可分的,但这应该只是一种方式。视图模型应该完全独立于任何视图实现。就像视图模型是接口,视图是具体实现的类。所以出于这个原因,我没有将任何特定于WPF的属性(例如可见性枚举)放入我的ViewModel中,因为这会使我永远无法使用WPF(这不是一件很糟糕的事情),但它会影响维护。 |
|
|
2
2
如果你安装 ReSharper ,您将获得的一个(许多)特性是“代码检查”。此检查将检测到的一个情况是绑定无法解析为数据上下文上的属性。您可以轻松筛选“检查结果”窗口,以仅显示这些问题。 请注意,您必须在XAML资源中显式地声明视图模型的类型,这样才能工作。
|
|
|
3
1
有许多可以说是很好的场景,其中实际需要这种行为。在任何情况下,绑定都是通过设计来吞咽错误的,这也是您在查找任何有助于解决此问题的内容时遇到困难的原因。 我所看到的最好的事情是一个异常验证处理程序,它将显示绑定错误: http://msdn.microsoft.com/en-us/library/system.windows.controls.exceptionvalidationrule.aspx 这一点的理由是视图,视图模型应该分离到一个视图可以用于多个视图模型的位置。它也有助于视图的“可弯曲性”,这样理论上,设计人员类型可以对视图进行样式设置,而不会在进行样式设置时遇到许多错误。我知道这可能不适合你的过程,但事实就是这样。 |
|
|
4
1
从最初的问题被问到和回答已经有好几年了,但正如我刚才所检查的,从那时起解决方案可能变得更简单了。resharper似乎提供了正确的intellisense,而不需要生成接受的答案中提到的静态类。 但我还没有看到公认答案中所述的编译时错误。我甚至尝试使用[XamlCompilation(XamlCompilationOptions.Compile)]也没有用。如果我遗漏了什么,请纠正我的错误。 |
|
|
5
0
目前我们正在使用 Caliburn 以本文中解释的方式进行单元测试 Testing Bindings In WPF . 这个解决方案的缺点是,UI开发人员编写的代码只意味着验证绑定,如果MS(或其他人)要编写XAML验证编译器,则可以省略这些代码。 |
|
|
6
-1
我同意前面的回答。这是“按设计”的,无法在编译时对其进行检查。 我也觉得很痛。 我找到的最好也是唯一的方法是在运行时检查Visual Studio调试输出。一旦打开包含绑定错误的窗口,将立即打印所有绑定错误。 我同意如果你认为这是一个蹩脚和不可靠的方法,但它应该工作,如果你没有大量的窗口。您可以创建一个半正式的测试实践,在这个实践中,每隔一段时间打开一个专门查找绑定错误的窗口。 |
|
|
Sei · Avalonia/WPF将路由器传递到控制模板 1 年前 |
|
|
Barta · WPF MVVM不更新视图 1 年前 |
|
|
Denis Ivanov · WPF控件在属性更改时不会更新 1 年前 |
|
|
codymanix · WPF:TextBlock周围可见小边框? 1 年前 |
|
|
Nostromo · 来自背景对象的工具提示 1 年前 |
|
|
Nuvolari · 从可观测集合添加/删除时出现对象处理异常 2 年前 |
|
|
CCarter · 只能在设计器中DependencyObject的DependencyProperty上设置显示“Binding”的WPF ICommand DependencyProperties[重复] 2 年前 |
|
|
Thern · 在UI线程(WPF)上的void方法中调用异步函数 2 年前 |