6

想要匹配按钮的默认背景颜色以在 Expander 中使用。
按钮的默认背景颜色是什么?

我试过什么?
很多不同的颜色,但没有找到一个匹配。

4

6 回答 6

14
Background="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"
于 2013-10-14T12:29:36.623 回答
6

在 WPF 中,您可以右键单击一个元素并选择“编辑模板”,这将创建控件正在使用的确切模板,包括背景颜色。然后,您可以将生成的相同背景颜色应用于您想要的任何控件。

或者,如果您只想复制单个画笔,您可以转到该控件画笔属性并单击小方块并选择“转换为新资源”。然后将新生成的画笔应用于您想要的任何元素。

结果如下

<Window x:Class="WpfApplication2.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
<Window.Resources>
    <LinearGradientBrush x:Key="Brush1" EndPoint="0,1" StartPoint="0,0">
        <GradientStop Color="#FFF3F3F3" Offset="0"/>
        <GradientStop Color="#FFEBEBEB" Offset="0.5"/>
        <GradientStop Color="#FFDDDDDD" Offset="0.5"/>
        <GradientStop Color="#FFCDCDCD" Offset="1"/>
    </LinearGradientBrush>
</Window.Resources>
<Grid>
    <Button Content="Button" HorizontalAlignment="Left" Margin="151,139,0,0" VerticalAlignment="Top" Width="75" Background="{DynamicResource Brush1}"/>
    <Expander Header="Expander" HorizontalAlignment="Left" Margin="412,129,0,0" VerticalAlignment="Top" Background="{DynamicResource Brush1}">
        <Grid Background="#FFE5E5E5"/>
    </Expander>

</Grid>

于 2013-06-28T13:34:44.450 回答
2

WPF 将根据操作系统应用不同的颜色/形状。因此,不存在完全一种默认颜色。但是,作为参考,请检查按钮 controltemplate page。您应该找到静态资源 WindowBackgroundBrush、DisabledBackgroundBrush 和 SelectedBackgroundBrush

于 2013-06-28T13:25:32.237 回答
2

这是 wpf 控件正在使用的预定义画笔

您仍然需要找到 Button 控件使用哪一个,您可以通过使用 Blend 编辑 Button 模板来做到这一点。

根据具体情况,您可能需要将画笔引用为

"{DynamicResource {x:Static SystemColors.ControlLightLightColorKey}}"

或任何刷子。

Edit1: 如果我没记错的话,WindowBrush 资源是 Button 控件用作其默认背景的资源。

Edit2 不要忘记默认的 Button 模板还包含一个 chrome 对象,它对最终布局增加了一些影响。

于 2013-06-28T14:01:32.360 回答
0

您可以使用“颜色到 Html”,这是一个不错的应用程序,并且您有一个工具可以从桌面颜色中提取任何颜色到 Html

于 2013-06-28T13:22:52.553 回答
0

Blam 的答案有效,但它是“对控制系统画笔的动态引用”,所以在我的情况下,因为我的按钮嵌套在一个开始禁用的堆栈面板中,当我使用时Background="{DynamicResource {x:Static SystemColors.ControlBrushKey}}",它导致我的按钮即使在堆栈面板时也是一个平坦的灰色(因此按钮)已启用。显然它动态地将我的按钮设置为“禁用的灰色”颜色,但在启用时不会动态地将其更改为全彩模式。

正如我的链接所说,您可以使用以下方法获取对按钮的静态引用:

Background="{DynamicResource {x:Static SystemColors.ControlBrush}}"

请注意,唯一的区别是使用ControlBrush而不是ControlBrushKey. 这样做允许我的按钮在禁用时开始为纯灰色,但在启用时为全彩色。

于 2015-07-08T19:31:11.883 回答