如何在WPF的代码隐藏中执行此操作?
<Grid Background="{DynamicResource {x:Static SystemColors.DesktopBrushKey}}"/>
答案 0 :(得分:14)
我刚刚发现了一个丑陋的解决方案:
grid1.SetResourceReference(
Control.BackgroundProperty,
SystemColors.DesktopBrushKey);
我希望有人发布更好的内容(我希望看到类似grid1.Background = BackgroundBrush的东西,因为SetResourceReference的语法是从Windows Forms向后退一步)。
答案 1 :(得分:6)
扩展方法可能有所帮助:
public static class FrameworkElementExtensions
{
// usage xPanel.SetBackground(SystemColors.DesktopBrushKey);
public static void SetBackground(this Panel panel, ResourceKey key)
{
panel.SetResourceReference(Panel.BackgroundProperty, key);
}
// usage xControl.SetBackground(SystemColors.DesktopBrushKey);
public static void SetBackground(this Control control, ResourceKey key)
{
control.SetResourceReference(Control.BackgroundProperty, key);
}
}
答案 2 :(得分:6)
这必须已经添加到WPF的更高版本中,因为最初发布的是因为您的原始代码适用于我(我正在使用WPF 4.5)
<Grid Background="{DynamicResource {x:Static SystemColors.DesktopBrushKey}}"/>
答案 3 :(得分:2)
.NET Framework受以下版本支持:3.0
https://msdn.microsoft.com/en-us/library/system.windows.systemcolors.highlightbrush(v=vs.85).aspx https://msdn.microsoft.com/en_us/library/system.windows.systemcolors.highlightbrushkey(v=vs.85).aspx
this.background=SystemColors.HighlightBrush;