【问题标题】:How to set background color of button in WPF?如何在 WPF 中设置按钮的背景颜色?
【发布时间】:2015-10-19 11:18:08
【问题描述】:

如何设置xaml中按钮的背景颜色?

它不会比它更难

<Button Margin="2" Background ="LightGreen" ....>

但这不起作用...为避免混淆,这里的按钮是System.Windows.Controls.Button

编辑

我忘了提到我使用了 DevExpress 的 ThemeManager,但我认为这不会导致问题,因为 DevExpress 他们没有设置标准 Windows 按钮的样式......但是显然他们这样做了,这基本上使得无法更改背景颜色没有一些主要工作的按钮......

【问题讨论】:

  • 你的项目中是否有任何主题化方法?
  • 是的,DevExpress ThemeManager...
  • @Downvoter,想发表评论吗?
  • 您能解释一下您是如何使用 ThemeManager 的吗?你确定你没有改变按钮的样式或模板吗?您已经尝试过的方法是执行此操作的正常方法,除非您没有在其他地方更改背景。
  • @MattWolf Wolf 这可能对你有帮助:devexpress.com/Support/Center/Question/Details/Q399125

标签: c# wpf xaml devexpress


【解决方案1】:

根据documentation

DevExpress 提供多种主题,可应用于所有 适用于 WPF 的 DevExpress 控件和一些标准控件(GroupBox、 ScrollViewer,滚动,RadoiButton,按钮,列表框,滑块, TabControl、分隔符、切换按钮、重复按钮、标签、ListBoxItem、 TabItem、ToolTip 等)。

如您所见,此处列出了Button 控件。但是在文档中据说可以通过将ThemeName 属性设置为None 来禁用单独控制的主题。因此,您可以禁用按钮或其某些父容器的主题并使用您自己的样式。
这是一个例子:

<Button Margin="2" Background="LightGreen" dx:ThemeManager.ThemeName="None" ...>

【讨论】:

  • 快速浏览实际文档可以产生惊人的效果,您刚刚解决了我的问题。我什至从未检查过,因为 DevExpress 在支持论坛中自己的工作人员坚持认为这是不可能的。非常感谢。快速清洁的解决方案。
【解决方案2】:

试试这个:

yourBtn.Background = new SolidColorBrush(Colors.Green);

或者在 XAML 中:

<Window.Resources>
   <SolidColorBrush x:Key="BG" Color="Green"/>
</Window.Resources>

<Button Background="{DynamicResource BG}"></Button>

【讨论】:

  • 我专门要求xaml解决方案!
  • 也就是说,尝试以这种方式设置背景,看看它是否有效。然后你就会知道这是你的 xaml 的问题,而不是一些奇怪的配置导致按钮无法正确着色
  • 为什么是Grid.Resources
  • 也不起作用。我认为使用 DevExpress ThemeManager 时存在问题。它似乎覆盖了某些东西......尽管他们强调 Windows Button 不是他们样式库的一部分
  • 您的按钮是否存在于网格中?调用 Grid.Ressources ??
【解决方案3】:

&lt;Button Margin="2" Background="LightGreen"/&gt; 有效。如果它不适合您,也许您有另一个 style 或样式管理器在某处覆盖它。

其他信息 - 另一个答案显示了如何使用动态资源设置单个按钮的样式。要使用资源字典为样式中的所有按钮设置背景颜色,您可以使用以下内容:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

    <!--background brush-->
    <LinearGradientBrush x:Key="backgroundBrush" StartPoint="0.5,0" EndPoint="0.5,1">
        <GradientStop Color="White" Offset="0.3"/>
        <GradientStop Color="#DDDDFF" Offset="1"/>
    </LinearGradientBrush>

        <!--The style for buttons-->
        <Style TargetType="Button">
            <Setter Property="Background" Value="{StaticResource backgroundBrush}"/>
        </Style>
    </ResourceDictionary>

【讨论】:

  • 我建议将 &lt;Button Margin="2" Background="LightGreen" ....&gt; 替换为 Your code 或简单地 It 以使其尽可能短。
  • @KingKing 我不太清楚你在说什么?对于将来查看此问题的人来说,带有完整代码的答案肯定会更好(特别是如果原始问题在某个时候被编辑)
  • 你不明白我的意思(或者可能暗示)。这甚至不是一个答案,请小心避免对此投反对票。我的一些 cmets 甚至比这长 3-4 倍。
  • 啊哈讽刺,够公平的。我计划更新它,因为 OP 提供了更多详细信息 - 但对“如何在 xaml 中设置按钮的背景颜色?”的有效答案?在我看来,&lt;Button Margin="2" Background="LightGreen"/&gt;
  • @simonalexander2005,我发现它与 DevExpress 的 ThemeManager 有关。尽管他们强调 Windows.Controls 的 Button 不是由他们设计的...
猜你喜欢
  • 2016-07-15
  • 2017-12-18
  • 1970-01-01
  • 2019-06-07
  • 1970-01-01
  • 2010-09-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多