2016-12-01 9 views
1

を追加された私は、次を含むリソースディクショナリを持っている:WPF StaticResource:同じキーを持つ項目が既に

<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は、参照元によって1回だけ取得され、リソースの全期間使用されます。一方、DynamicResourceは、参照されるオブジェクトが使用されるたびに取得されます。

+0

大丈夫ですが、これは "同じキーを持つアイテムが既に追加されている理由"を説明していません。例外がスローされます。 – dman

関連する問題