2012-01-27 100 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由於數量有限而變得難以閱讀,那麼大多數構造(即每個開放節點)都應該在邊距中有一個+/-符號,您可以使用該符號來展開和摺疊代碼塊。