|
|
1
1
你可以暴露 IDataErrorInfo . 这允许您使用复杂的逻辑进行数据验证。 |
|
|
2
1
就我个人而言,我不喜欢用IDataErrorInfo来处理这么简单的事情,因为它需要免费创建一个视图模型和大量不需要的额外代码。它应该如此简单: 我有一个标记扩展,它允许我创建一个绑定,并使用指定为C表达式的自定义验证代码。这非常简单,除了C解析器:只需通过构造使用转换器并构建适当验证结构的多绑定来实现provideValue()。这允许验证表达式接收包含的DataContext和用户指定的绑定对象以及正在验证的值。 通过对该解决方案进行编码,您可以执行如下操作:
通过在代码后面创建表达式作为lambda并用x:static引用它,您可以轻松地在没有C分析器的情况下调整我的解决方案:
总的来说,我发现这种技术比使用视图模型更容易、更清晰。当需要复杂的转换时,我仍然使用ViewModels,否则只使用纯XAML直接到业务对象层。 注意,这种方法假定业务对象层没有绑定到任何特定的后端存储布局(如SQL表结构)。如果是这样,更改后端存储将需要更改我的用户界面,这也不可取,因此从这个角度来看,ViewModel是可取的。但如果不是,我总是喜欢保持简单,只使用直接的XAML。 |
|
|
Sei · Avalonia/WPF将路由器传递到控制模板 1 年前 |
|
|
Barta · WPF MVVM不更新视图 1 年前 |
|
|
Denis Ivanov · WPF控件在属性更改时不会更新 1 年前 |
|
|
codymanix · WPF:TextBlock周围可见小边框? 1 年前 |
|
|
Nostromo · 来自背景对象的工具提示 2 年前 |
|
|
Nuvolari · 从可观测集合添加/删除时出现对象处理异常 2 年前 |
|
|
CCarter · 只能在设计器中DependencyObject的DependencyProperty上设置显示“Binding”的WPF ICommand DependencyProperties[重复] 2 年前 |
|
|
Thern · 在UI线程(WPF)上的void方法中调用异步函数 2 年前 |