2016-12-01 107 views
1

我有一个包含以下内容的资源字典:与同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> 

以上是抛出一个异常

“的项目密钥已被添加。“

如果我

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

更换

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

没有抛出异常。为什么是这样?

回答

0

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

+0

好吧,但这并不能解释为什么“”具有相同密钥的项目已被添加。“抛出异常。 – dman

相关问题