最初我有一个窗口,里面有很多像这样的绑定:
<TextBox Grid.Row="3" Grid.Column="1" Text="{Binding Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, Path=DatabaseServer}" />
现在我必须为每个绑定添加验证,然后结束:
<TextBox Grid.Row="3" Grid.Column="1" >
<TextBox.Text>
<Binding Path="DatabaseServer" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged">
<Binding.ValidationRules>
<Utils:NotEmptyStringValidator />
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
这可以用更少的文字写吗?否则我将以一个难以维护的窗口结束。
答案 0 :(得分:2)
来自MSDN上的Binding Markup Extesnion页:
以下是无法使用的设置的Binding属性 绑定标记扩展/ {Binding}表达形式。</ p>
ValidationRules:该属性采用泛型集合 ValidationRule对象。这可以表示为属性元素 在Binding对象元素中,但没有随时可用 用于Binding表达式的属性解析技术。看到 ValidationRules的参考主题。
所以,不,没有更简洁的标记。
除非您想编写自己的标记扩展名?
答案 1 :(得分:0)
您可以跳过Mode="TwoWay"
,因为WPF默认情况下是这样。否则,当您以声明方式使用ValidationRules时,无法更简洁地编写它。
如果您担心XAML由于您的数量而变得难以阅读,大多数结构(即每个开放节点)应该在边距中有一点+/-符号,您可以使用它来展开和折叠代码块。