我有了以下簡單的XAML(沒有必要讀它 - 只是它爲參考)的文本框:問題有關數據模板或樣式在WPF XAML
<TextBox Name="m_ctrlUserDeviceType" Style="{StaticResource textStyleTextBox}" Text="{Binding Source={x:Static api:MySettings.Instance}, Path=UserDeviceType, ValidatesOnExceptions=true, NotifyOnValidationError=true}" Validation.Error="TextBox_Error" MinHeight="25" Margin="4" VerticalAlignment="Top" MaxLength="23" VerticalContentAlignment="Center" HorizontalAlignment="Left" MinWidth="100"></TextBox>
爲了完整,風格textStyleTextBox外觀像這樣的(同樣,沒有必要讀來回答問題):
<Style x:Key="textStyleTextBox" TargetType="TextBox">
<Setter Property="Foreground" Value="#333333" />
<Setter Property="VerticalAlignment" Value="Top" />
<Setter Property="MinHeight" Value="2" />
<Setter Property="MinWidth" Value="100" />
<Setter Property="Margin" Value="4" />
<Setter Property="MaxLength" Value="23" />
<Setter Property="VerticalContentAlignment" Value="Center" />
<Setter Property="HorizontalAlignment" Value="Left" />
<!-- <Setter Property="Binding Source" Value="{x:Static api:MySettings.Instance}"/>
<Setter Property="Binding ValidatesOnExceptions" Value="true" />
<Setter Property="Binding NotifyOnValidationError" Value="true" /> -->
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="true">
<Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self},
Path=(Validation.Errors)[0].ErrorContent}" />
</Trigger>
</Style.Triggers>
</Style>
我在款式很多的東西(MiHeight,保證金等),因爲我有很多這些文本框和他們」幾乎完全一樣。事實上,除了風格之外,還有很多共同之處。綁定到類MySettings的細節幾乎相同。唯一的區別是文本框綁定了哪個特定的屬性。另外,我總是爲Validation.Error使用TextBox_Error。
有沒有辦法將樣式或數據模板中的綁定信息,所以我不必繼續爲每個文本框輸入它?
我需要能夠爲每個文本框分配一個單獨的屬性(路徑),並且我想我仍然需要能夠在將來添加的某些特定文本框中不使用任何文本框使用數據綁定到MySettings)。
有沒有辦法將TextBox_Error的一部分放入樣式或DataTemplate中?使用Setter Property似乎不適合我。
我不斷提及數據模板,因爲我認爲答案可能與基於閱讀C#2008中的Pro Silverlight 2有關。但是,我無法弄清楚。我也嘗試在「Style」中添加內容,正如您可以從該部分的註釋內容中看到的那樣。
感謝,
戴夫
感謝。我會研究這種方法。 – Dave 2010-10-13 16:15:50