【发布时间】:2018-08-20 09:20:39
【问题描述】:
所以我不知道这是否真的可能,但值得一试。我有两个不同的DatagridRowStyles 有条件地设置在DataGridBaseStyle 中。
例如:
<Style x:Key="DataGridBaseStyle"
TargetType="sdk:DataGrid">
<Setter Property="CellStyle" Value="{StaticResource DataGridCellBaseStyle}" />
<Setter Property="ColumnHeaderStyle" Value="{StaticResource DataGridColumnHeaderBaseStyle}" />
<Setter Property="RowHeaderStyle" Value="{StaticResource DataGridRowHeaderBaseStyle}" />
<Setter Property="RowStyle" Value="{StaticResource DataGridRowBaseStyle} />
...
RowStyle 的属性设置器值我想使用两种样式之一,具体取决于我使用的“自定义主题”。
到目前为止,我尝试过这样设置,但它只默认为普通样式。
<Setter Property="RowStyle">
<Setter.Value>
<Binding>
<Binding.Converter>
<conv:DataGridRowStyleConverter/>
</Binding.Converter>
</Binding>
</Setter.Value>
</Setter>
也一样
<Setter Property="RowStyle" Value="{StaticResource DataGridRowBaseStyle} Converter={StaticResource DataGridRowStyleConverter}" />
转换器编码
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (ColourScheme == "Dark")
return Application.Current.Resources["DataGridRowBaseDarkStyle"] as Style;
return Application.Current.Resources["DataGridRowBaseStyle"] as Style;
}
我有点认为我的转换器返回值不正确,但我也确实在没有运气的情况下使用了这些值。
【问题讨论】:
-
我认为,您的转换方法代码不正确。您应该检查 Convert() 方法的 value 参数,方法是将其类型转换为 DataGridRowBaseStyle 而不是 ColourScheme。
标签: c# wpf xaml silverlight datagrid