我在 xaml 中为我的窗口创建了一个样式,其中包含到 DynamicResource 的绑定(bind):
<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 中的颜色值更改为颜色值时:
<x:Array Type="Brush">
<SolidColorBrush Color="LightGray" />
<SolidColorBrush Color="DarkGray" />
</x:Array>
颜色被正确分配:
这就是为什么我被引导相信它与绑定(bind)有关。我绑定(bind)颜色的方式有问题吗?
最佳答案
Binding.ConverterParameter
不是 WPF 逻辑树的一部分,因此无法在其中执行动态资源查找。
关于wpf - DynamicResource 绑定(bind)到 Color 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11191466/