DynamicResource へのバインディングを含むウィンドウの xaml でスタイルを作成しています。
<Window.Resources>
<local:RowColorConverter x:Key="RowColorConverter" />
<Style x:Key="OddEvenRowStyle">
<Setter Property="DataGridRow.Background">
<Setter.Value>
<Binding RelativeSource="{RelativeSource AncestorType=GroupItem}" Path="(ItemsControl.AlternationIndex)" Converter="{StaticResource RowColorConverter}">
<Binding.ConverterParameter>
<x:Array Type="Brush">
<SolidColorBrush Color="{DynamicResource RowPrimaryBrush}" />
<SolidColorBrush Color="{DynamicResource RowSecondaryBrush}" />
</x:Array>
</Binding.ConverterParameter>
</Binding>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
次に、スタイルを DataGrid の RowStyle に割り当てます。
<DataGrid Name="dataGrid" AutoGenerateColumns="False" Height="Auto" Width="Auto" ItemsSource="{Binding}" RowStyle="{StaticResource OddEvenRowStyle}">
ウィンドウの初期化で、次の DynamicResource 値を割り当てています。
Resources["RowPrimaryBrush"] = Colors.LightGray;
Resources["RowSecondaryBrush"] = Colors.DarkGray;
ただし、ウィンドウをロードすると、色が正しく機能しません。
xaml の Color 値を color 値に変更すると、コードの残りの部分は問題ないと確信しています。
<x:Array Type="Brush">
<SolidColorBrush Color="LightGray" />
<SolidColorBrush Color="DarkGray" />
</x:Array>
色が正しく割り当てられます。
それが、バインディングと関係があると私が信じるようになった理由です。色をバインドする方法に何か問題がありますか?