DataTemplate 内に TextBlock と TextBox を単純に含む UserControl があります。これは次の方法で行われます。
<UserControl.Resources>
<DataTemplate DataType="{x:Type Binding:StringBindingData}" x:Key="dataTemp">
<StackPanel Orientation="Horizontal" Name="sPanel">
<TextBlock Name="txtDescription" Text="{Binding Description}" />
<TextBox Name="textboxValue" Text="{Binding Mode=TwoWay, Path=Value, UpdateSourceTrigger=PropertyChanged}" />
</StackPanel>
</DataTemplate>
</UserControl.Resources>
<Grid>
<ItemsControl Name="textItemsControl" ItemsSource="{Binding}"/>
</Grid>
さまざまな状況で TextBlock/TextBox にさまざまなスタイルを適用できるようにする必要があります。たとえば、特定のインスタンスでは、白い前景を TextBlock に適用したり、TextBox の幅を変更したりしたいと考えています。
コントロールが使用されているウィンドウで、TextBlock のスタイルを設定しました。
<Style TargetType="{x:Type TextBlock}" >
<Setter Property="Foreground" Value="White" />
</Style>
これは、ウィンドウ内の他のすべての TextBlocks で機能しました。
また、分離コードで DataTemplate を取得しようとしました
var myDataTemplate = (DataTemplate)this.Resources["dataTemp"];
しかし、すべての TextBlock 要素にスタイルを適用することはできませんでした。