DataGrid.Resources 可以在后面的代码中设置吗?
Can DataGrid.Resources be set in code behind?
我想在后面的代码中更改 WPF DataGrid 的画笔颜色。
这是有效的 XAML 代码:
<DataGrid.Resources>
<SolidColorBrush x:Key="{x:Static SystemColors.InactiveSelectionHighlightBrushKey}" Color="{x:Static SystemColors.HighlightColor}"/>
<SolidColorBrush x:Key="{x:Static SystemColors.InactiveSelectionHighlightTextBrushKey}" Color="{x:Static SystemColors.HighlightTextColor}"/>
</DataGrid.Resources>
是否可以在代码隐藏中设置此 XAML 代码(在继承自默认 DataGrid 的自定义 class 的构造函数中)?
您可以这样做(如果您使用的是自定义 class):
public class CustomDataGrid : DataGrid
{
public CustomDataGrid()
{
var converter = new BrushConverter();
var background = FindResource(SystemColors.HighlightBrushKey);
var foreground = FindResource(SystemColors.HighlightTextBrushKey);
this.Resources.Add(SystemColors.InactiveSelectionHighlightBrushKey, (Brush)converter.ConvertFromString(background.ToString()));
this.Resources.Add(SystemColors.InactiveSelectionHighlightTextBrushKey, (Brush)converter.ConvertFromString(foreground.ToString()));
}
}
丹妮尔·萨托里:
非常感谢。您的回答是我的问题的解决方案,但给出了例外情况。此代码解决的问题:
var converter = new BrushConverter();
var background = FindResource(SystemColors.HighlightBrushKey);
var foreground = FindResource(SystemColors.HighlightTextBrushKey);
this.Resources.Add(SystemColors.InactiveSelectionHighlightBrushKey, (Brush)converter.ConvertFromString(background.ToString()));
this.Resources.Add(SystemColors.InactiveSelectionHighlightTextBrushKey, (Brush)converter.ConvertFromString(foreground.ToString()));
我想在后面的代码中更改 WPF DataGrid 的画笔颜色。 这是有效的 XAML 代码:
<DataGrid.Resources>
<SolidColorBrush x:Key="{x:Static SystemColors.InactiveSelectionHighlightBrushKey}" Color="{x:Static SystemColors.HighlightColor}"/>
<SolidColorBrush x:Key="{x:Static SystemColors.InactiveSelectionHighlightTextBrushKey}" Color="{x:Static SystemColors.HighlightTextColor}"/>
</DataGrid.Resources>
是否可以在代码隐藏中设置此 XAML 代码(在继承自默认 DataGrid 的自定义 class 的构造函数中)?
您可以这样做(如果您使用的是自定义 class):
public class CustomDataGrid : DataGrid
{
public CustomDataGrid()
{
var converter = new BrushConverter();
var background = FindResource(SystemColors.HighlightBrushKey);
var foreground = FindResource(SystemColors.HighlightTextBrushKey);
this.Resources.Add(SystemColors.InactiveSelectionHighlightBrushKey, (Brush)converter.ConvertFromString(background.ToString()));
this.Resources.Add(SystemColors.InactiveSelectionHighlightTextBrushKey, (Brush)converter.ConvertFromString(foreground.ToString()));
}
}
丹妮尔·萨托里:
非常感谢。您的回答是我的问题的解决方案,但给出了例外情况。此代码解决的问题:
var converter = new BrushConverter();
var background = FindResource(SystemColors.HighlightBrushKey);
var foreground = FindResource(SystemColors.HighlightTextBrushKey);
this.Resources.Add(SystemColors.InactiveSelectionHighlightBrushKey, (Brush)converter.ConvertFromString(background.ToString()));
this.Resources.Add(SystemColors.InactiveSelectionHighlightTextBrushKey, (Brush)converter.ConvertFromString(foreground.ToString()));