我的窗口中有一个元素,如下所示:
<Grid>
<DockPanel LastChildFill="True">
<Label Name="StatisticsLabel" DockPanel.Dock="Bottom"></Label>
<RichTextBox Style="{StaticResource FocusMode}" Name="RichTextBox1" />
</DockPanel>
</Grid>
我想在运行时在两个样式之间切换,具体取决于我需要控件的状态。
我原以为我可以使用以下代码:
<Window.Resources>
<Style x:Name="FocusMode" TargetType="RichTextBox">
<Setter Property="VerticalScrollBarVisibility" Value="Disabled"></Setter>
</Style>
<Style x:Name="NormalMode" TargetType="RichTextBox">
<Setter Property="VerticalScrollBarVisibility" Value="Auto"></Setter>
</Style>
</Window.Resources>
当然这不起作用。
为什么WPF不支持每个元素的多个样式?看起来像一个非常基本的要求?
否则,我该如何实现?
答案 0 :(得分:1)
抱歉找到了,而不是x:名称使用x:Key如下:
<Window.Resources>
<Style x:Key="FocusMode" TargetType="RichTextBox">
<Setter Property="VerticalScrollBarVisibility" Value="Disabled"></Setter>
</Style>
<Style x:Key="NormalMode" TargetType="RichTextBox">
<Setter Property="VerticalScrollBarVisibility" Value="Auto"></Setter>
</Style>
答案 1 :(得分:0)
我看一下样式触发器。你可以从这篇文章中获得一个良好的开端:How to make Style.Triggers trigger a different named style to be applied