WPF StaticResource:已添加具有相同键的项目

时间:2016-12-01 17:19:31

标签: wpf

我有一个包含以下内容的资源字典:

 <SolidColorBrush x:Key="RowAlt"
                     Color="Gray" />
<Style x:Key="MainTreeRowStyle"
           TargetType="{x:Type dxg:RowControl}">
        <Setter Property="Foreground"
                Value="White" />
        <Setter Property="ShowHorizontalLine"
                Value="False" />
        <Setter Property="ShowVerticalLines"
                Value="False" />
        <Style.Triggers>
            <MultiDataTrigger>
                <MultiDataTrigger.Conditions>
                    <Condition Binding="{Binding AlternateRow}"
                               Value="False" />
                </MultiDataTrigger.Conditions>
                <Setter Property="Background"
                        Value="Black" />
            </MultiDataTrigger>
            <Trigger Property="dxg:GridViewBase.IsFocusedRow"
                     Value="True">
                <Setter Property="Background"
                        Value="{StaticResource RowAlt}" />
            </Trigger>
        </Style.Triggers>
 </Style>

以上是抛出异常

  

&#34;已添加具有相同密钥的项目。&#34;

如果我替换

 <Setter Property="Background"
                            Value="{StaticResource RowAlt}" />

 <Setter Property="Background"
                            Value="{DynamicResource RowAlt}" />

不会抛出任何异常。为什么是这样?

1 个答案:

答案 0 :(得分:0)

StaticResource和DynamicResource之间的区别在于引用元素如何检索资源。 StaticResource仅由引用元素检索一次,并用于资源的整个生命周期。另一方面,每次使用引用的对象时都会获取DynamicResource。