如何在WPF中为同一元素类型提供多个窗口资源样式

时间:2012-02-27 22:39:49

标签: c# wpf xaml

我的窗口中有一个元素,如下所示:

<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不支持每个元素的多个样式?看起来像一个非常基本的要求?

否则,我该如何实现?

2 个答案:

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