如何使用数据触发器的默认样式



我从MaterialDesignInXaml设置了默认样式,当我尝试向控件添加数据触发器时,它不会使用相同的样式。

在拥有数据触发器的情况下,我如何仍然使用默认样式?

<TextBox Margin="10" VerticalAlignment="Bottom" Padding="5" materialDesign:HintAssist.Hint="Search">
<TextBox.Style>
<Style BasedOn="{StaticResource MaterialDesignOutlinedTextBox}"> <!--Not Allowed to do this -->
<Setter Property="TextBox.Visibility" Value="Collapsed"></Setter>
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=SearchStyle, Path=SelectedItem.Tag}" Value="Search">
<Setter Property="Label.Visibility" Value="Visible"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>                       
</TextBox.Style>
</TextBox>

您必须为与基本样式匹配的Style指定确切的TargetType

[…]如果创建了一个具有TargetType属性的样式,并将其建立在另一个定义了TargetType属性的样式的基础上,则派生样式的目标类型必须与基础样式的目标类别相同或派生自基础样式的目标类别。

<Style TargetType="{x:Type TextBox}" BasedOn="{StaticResource MaterialDesignOutlinedTextBox}">

在源代码中,MaterialDesignOutlinedTextBox样式具有TextBox目标类型。

最新更新