【问题标题】:Is it possible to modify a textbox style to use a particular datatrigger?是否可以修改文本框样式以使用特定的数据触发器?
【发布时间】:2019-04-09 04:40:35
【问题描述】:

我有一个文本框,它使用所有文本框通用的样式,因此我可以对所有文本框使用相同的方面。

但是,在特定的 TextBox 中,我需要根据条件修改它的可见性,所以我正在尝试这样做:

<TextBox 
    Text="{Binding MyBinding, Mode=OneWay}"
    Style="{StaticResource TextBoxStyle1}">
    <TextBox.Style>
        <Style TargetType="StackPanel">
            <Setter Property="Visibility" Value="Visible"/>
            <Style.Triggers>
                <DataTrigger Binding="{Binding ElementName=thisView, Path=DataContext.MyPropertyInViewModel}" Value="3">
                    <Setter Property="Visibility" Value="Collapsed"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </TextBox.Style>
</TextBox>

问题是我不能设置两次样式,所以不知道如何定义数据触发器来隐藏文本框。

我该怎么做?

谢谢。

【问题讨论】:

    标签: wpf datatrigger


    【解决方案1】:

    删除样式="{StaticResource TextBoxStyle1}" 并将 BasedOn 标签添加到新样式 BasedOn="{StaticResource TextBoxStyle1}"

    <TextBox 
        Text="{Binding MyBinding, Mode=OneWay}">
        <TextBox.Style>
            <Style TargetType="StackPanel" BasedOn="{StaticResource TextBoxStyle1}">
                <Setter Property="Visibility" Value="Visible"/>
                <Style.Triggers>
                    <DataTrigger Binding="{Binding ElementName=thisView, Path=DataContext.MyPropertyInViewModel}" Value="3">
                        <Setter Property="Visibility" Value="Collapsed"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </TextBox.Style>
    </TextBox>
    

    这将允许您重用现有样式。但是,如果现有样式已经定义了您不想要的 DataTrigger,则需要为此文本框创建新样式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-07
      • 1970-01-01
      • 2014-02-15
      相关资源
      最近更新 更多