嵌套样式wpf的例外

时间:2014-08-22 16:40:55

标签: wpf wpf-style

这是我在Grid.Resources

中的风格
<ControlTemplate x:Key="ToggleButtonControlTemplate" TargetType="{x:Type ToggleButton}"
    <Grid>
         .....
    </Grid>
    <ControlTemplate.Triggers>
         .....
    </ControlTemplate.Triggers>
</ControlTemplate>

<Style TargetType="ToggleButton" x:Key="ToggleButtonStyle">
    <Setter Property="FontSize" ....... />
    .....
    <Setter Property="Template" Value="{StaticResource ToggleButtonControlTemplate}" />
</Style>

<Style x:Key="SidePanel" TargetType="StackPanel">
    <Style.Resources>
        <StaticResource ResourceKey="PreviewSidePanelToggleButtonStyle" /> ---> Exception
    </Style.Resources>
</Style>

使用此设计,但UI在设计模式下看起来很不错。但是当我运行这个应用程序时,我在行中得到一个例外:

<StaticResource ResourceKey="PreviewSidePanelToggleButtonStyle" />

带有消息:“设置属性'System.Windows.Style.Resources'引发异常”。

知道出了什么问题吗?

2 个答案:

答案 0 :(得分:0)

异常是因为您正在尝试将Style分配给Resources。资源属性是类型ResourceDictionary,你的类型是Style,因此无法进行投射,抛出异常。我不知道为什么你这样做但是为什么你这样做是不正确的你可以直接访问PreviewSidePanelToggleButtonStyle而不是转发给它风格资源。 Read remark section

答案 1 :(得分:0)

好像您想在资源部分重新定义样式。如果您想这样做,请使用 StaticResourceExtension ,同时您必须为资源部分下声明的任何项目设置 x:Key

这应该有效:

<StaticResourceExtension ResourceKey="PreviewSidePanelToggleButtonStyle"
                         x:Key="SomeKey"/>