按钮的默认背景颜色

时间:2013-06-28 13:17:58

标签: .net wpf button

想要匹配按钮的默认背景颜色,以便在扩展器中使用 按钮的默认背景颜色是什么?

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

6 个答案:

答案 0 :(得分:11)

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

答案 1 :(得分:4)

在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>

答案 2 :(得分:2)

WPF将根据操作系统应用不同的颜色/形状。因此,没有一种默认颜色。但是,至于参考,请检查button controltemplate page。你应该找到静态资源WindowBackgroundBrush,DisabledBackgroundBrush和SelectedBackgroundBrush

答案 3 :(得分:2)

Here are the predefined brushes that wpf controls are using

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

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

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

或任何刷子。

<强> EDIT1: 如果我没弄错,WindowBrush资源就是Button控件用于默认背景的资源。

<强> EDIT2 不要忘记默认的Button模板还包含一个chrome对象,它会对最终布局产生一些影响。

答案 4 :(得分:0)

你可以使用'Color to Html'它是一个不错的应用程序,你有一个工具从桌面提取任何颜色Colour to Html

答案 5 :(得分:0)

Blam的答案有效,但是“dynamic reference to the control system brush”,所以在我的情况下,因为我的按钮嵌套在一个禁用的堆栈面板中,当我使用Background="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"时,它导致我的按钮成为一个即使启用了堆叠面板(因此按钮),也会呈灰色。显然它会动态地将我的按钮设置为“禁用灰色”颜色,但在启用时不会动态地将其更改为全彩模式。

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

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

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