1

这是我内心的风格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' 引发异常”。

知道出了什么问题吗?

4

2 回答 2

0

似乎您想在资源部分重新定义样式。如果您想这样做,请使用StaticResourceExtension并且您还必须x:Key为资源部分下声明的任何项目进行设置。

这应该有效:

<StaticResourceExtension ResourceKey="PreviewSidePanelToggleButtonStyle"
                         x:Key="SomeKey"/>
于 2014-08-22T18:27:41.800 回答
0

例外是因为您试图将 Style 分配给 Resources 。Resource 属性是 ResourceDictionary 类型,而您的类型是 Style,因此无法进行强制转换并抛出异常。我不知道您为什么这样做,但为什么这样做是不正确的,您可以直接访问 PreviewSidePanelToggleButtonStyle 而不是将其转发到样式资源。阅读备注部分

于 2014-08-22T17:32:06.297 回答