2012-01-27 164 views
2

最初我曾与很多绑定所示的窗口之一:我可以写这个xaml更短吗?

<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

Binding Markup Extesnion秒Page上MSDN:

以下是结合不能使用 绑定标记扩展/ {结合}表达形式被设置的性质。

ValidationRules:属性采用 ValidationRule对象的通用集合。这可以表示为Binding对象元素中的属性元素 ,但是在Binding表达式中没有容易获得的属性分析技术。有关ValidationRules的参考主题,请参见 。

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

除非你想写自己的标记扩展?

0

您可以跳过Mode="TwoWay",因为它在WPF中是默认的。否则,当你使用声明式的ValidationRules时,没有办法更简洁地编写它。

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