Wpf XAML-带有触发器/参数的通用文本框样式?
我希望能够有一个通用的样式模板,可以切换我的文本框颜色的基础上布尔。但我不想为每个文本框创建一个独特的样式。我该怎么做 我已经在下面列出了一些示例代码,说明我可能期望它如何工作。 三个文本框,所有文本框具有不同的绑定,但试图使用相同的模板根据布尔值选择红色或绿色 谢谢Wpf XAML-带有触发器/参数的通用文本框样式?,wpf,xaml,.net-3.5,binding,Wpf,Xaml,.net 3.5,Binding,我希望能够有一个通用的样式模板,可以切换我的文本框颜色的基础上布尔。但我不想为每个文本框创建一个独特的样式。我该怎么做 我已经在下面列出了一些示例代码,说明我可能期望它如何工作。 三个文本框,所有文本框具有不同的绑定,但试图使用相同的模板根据布尔值选择红色或绿色 谢谢 <TextBlock Text="{Binding Text1}" Style={DynamicResource MyTextBoxTemplate} DataContext="{Binding MyBool1}" />
<TextBlock Text="{Binding Text1}" Style={DynamicResource MyTextBoxTemplate} DataContext="{Binding MyBool1}" />
<TextBlock Text="{Binding Text2}" Style={DynamicResource MyTextBoxTemplate} DataContext="{Binding MyBool2}" />
<TextBlock Text="{Binding Text3}" Style={DynamicResource MyTextBoxTemplate} DataContext="{Binding MyBool3}" />
<Style x:Key="MyTextBoxTemplate" TargetType="TextBlock">
<Style.Triggers>
<DataTrigger Value="True" Binding="{Binding ???}">
<Setter Property="Foreground" Value="Green" />
</DataTrigger>
<DataTrigger Value="False" Binding="{Binding ???}">
<Setter Property="Foreground" Value="Red" />
</DataTrigger>
</Style.Triggers>
</Style>
您可以使用TextBox的属性
<TextBlock Text="{Binding Text1}" Style={DynamicResource MyTextBoxTemplate} Tag="{Binding MyBool1}" />
<TextBlock Text="{Binding Text2}" Style={DynamicResource MyTextBoxTemplate} Tag="{Binding MyBool2}" />
<TextBlock Text="{Binding Text3}" Style={DynamicResource MyTextBoxTemplate} Tag="{Binding MyBool3}" />
<Style x:Key="MyTextBoxTemplate" TargetType="TextBlock">
<Style.Triggers>
<Trigger Property="Tag" Value="True">
<Setter Property="Foreground" Value="Green" />
</Trigger>
<Trigger Property="Tag" Value="False">
<Setter Property="Foreground" Value="Red" />
</Trigger>
</Style.Triggers>
</Style>
您也可以使用附加属性来代替标记