2010-04-15 43 views
1

我仍然在學習WPF繩索,所以如果下面的問題是微不足道的,或者我的方法錯了,請說出來......我試圖減少樣板,這聽起來像樣式是一種常見的方式所以。特別是:WPF:是否可以通過樣式或類似的東西添加或修改綁定?

我有一堆相當普通的數據輸入字段。這些字段的控件具有不同的屬性,我想根據綁定的目標設置 - 非常普通的東西。不過,我想喜歡在風格設置綁定本身的屬性,以避免重複性。

例如:

<TextBox Style="{StaticResource myStyle}"> 
    <TextBox.Text> 
     <Binding Path="..." Source="..." 
       ValidatesOnDataErrors="True" 
       ValidatesOnExceptions="True" 
       UpdateSourceTrigger="PropertyChanged"> 
     </Binding> 
    </TextBox.Text> 
</TextBox> 

現在,有什麼辦法可以使用樣式 - 在一定程度上這樣寫前面的例子或其他技術:

<TextBox Style="{StaticResource myStyle}" Text="{Binding Source=... Path=...}/> 

也就是說,有什麼如何設置所有與特定選擇相匹配的綁定(這裏是關於myStyle樣式的控件)以驗證數據並使用特定的更新觸發器?它可以自己模板或樣式綁定?

另外,是否有可能在風格本身添加綁定?

很明顯,第二種語法很多,更短,更易讀,我希望能夠擺脫其他類似的樣板文件,以使我的UI代碼能夠理解我自己:-)。

回答

1

您根本無法使用樣式來更改綁定上的屬性。你可以做的反而是使用下面的表格,以使事情更漂亮:

<TextBox Style="{StaticResource myStyle}" 
     Text="{Binding SomePath,Source=SomeSource,ValidatesOnDataErrors=True,ValidatesOnExceptions=True,UpdateSourceTrigger=PropertyChanged}" /> 

一個你可以做的另一件事就是從綁定派生類,並使用它作爲一個自定義標記擴展。在您的派生類構造函數中,您可以設置所有常見默認值,例如PropertyShanged for UpdateSourceTrigger等。

0

您可以在數據模板中指定綁定。問題是將該數據模板放入所需的文本框中。所以,你做的,而不是什麼設置數據模板中包含一個文本框,然後ContentControl中的內容設置爲靜態資源模板,像這樣:

<DataTemplate x:Key="BoundTextbox"> 
    <TextBlock TextAlignment="Right" VerticalAlignment="Center" TextWrapping="WrapWithOverflow"> 
     <TextBlock.Text> 
      <Binding Path="Path" Source="Source" 
       ValidatesOnDataErrors="True" 
       ValidatesOnExceptions="True" 
       UpdateSourceTrigger="PropertyChanged" /> 
     </TextBlock.Text> 
    </TextBlock> 
</DataTemplate> 

<ContentControl ContentTemplate="{StaticResource BoundTextbox}" Content="" /> 

最後一行是你所需要的投入做你的XAML用戶控制/頁面。

但一定要將數據模板添加到您的資源字典中,以便您可以在您的usercontrol/page中將其引用爲靜態資源。

相關問題