【问题标题】:XAML - Generic textbox stylewith triggers / parameters?XAML - 带有触发器/参数的通用文本框样式?
【发布时间】:2010-12-27 04:33:51
【问题描述】:

我希望能够拥有一个通用样式模板,该模板可以根据布尔值切换文本框的颜色。但我不想为每个文本框创建独特的样式。我该怎么做?

我在下面放置了一些示例代码,我希望它会如何工作。 三个文本框,都具有不同的绑定,但尝试使用相同的模板根据布尔值选择红色或绿色。

谢谢

<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>

【问题讨论】:

    标签: wpf xaml .net-3.5 binding


    【解决方案1】:

    你可以使用TextBox的Tag属性

    <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>
    

    【讨论】:

      【解决方案2】:

      您也可以使用附加属性来代替 Tag

      【讨论】:

        猜你喜欢
        • 2011-10-23
        • 2014-01-13
        • 2014-10-07
        • 1970-01-01
        • 1970-01-01
        • 2013-01-25
        • 1970-01-01
        • 1970-01-01
        • 2012-04-10
        相关资源
        最近更新 更多