我可以写这个xaml更短吗?

时间:2012-01-27 11:38:12

标签: wpf validation xaml binding

最初我有一个窗口,里面有很多像这样的绑定:

<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>

这可以用更少的文字写吗?否则我将以一个难以维护的窗口结束。

2 个答案:

答案 0 :(得分:2)

来自MSDN上的Binding Markup Extesnion页:

  

以下是无法使用的设置的Binding属性   绑定标记扩展/ {Binding}表达形式。<​​/ p>      

ValidationRules:该属性采用泛型集合   ValidationRule对象。这可以表示为属性元素   在Binding对象元素中,但没有随时可用   用于Binding表达式的属性解析技术。看到   ValidationRules的参考主题。

所以,不,没有更简洁的标记。

除非您想编写自己的标记扩展名?

答案 1 :(得分:0)

您可以跳过Mode="TwoWay",因为WPF默认情况下是这样。否则,当您以声明方式使用ValidationRules时,无法更简洁地编写它。

如果您担心XAML由于您的数量而变得难以阅读,大多数结构(即每个开放节点)应该在边距中有一点+/-符号,您可以使用它来展开和折叠代码块。