是否可以修改文本框样式以使用特定的数据触发器?
Is it possible to modify a textbox style to use a particular datatrigger?
我有一个 TextBox,它使用所有 TextBox 通用的样式,因此我可以对所有 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>
问题是我无法设置两次样式,所以我不知道如何定义隐藏文本框的数据触发器。
我该怎么做?
谢谢。
删除样式="{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,您将需要为此文本框创建一个新样式。
我有一个 TextBox,它使用所有 TextBox 通用的样式,因此我可以对所有 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>
问题是我无法设置两次样式,所以我不知道如何定义隐藏文本框的数据触发器。
我该怎么做?
谢谢。
删除样式="{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,您将需要为此文本框创建一个新样式。