【问题标题】:Make WPF button look less flat使 WPF 按钮看起来不那么扁平
【发布时间】:2012-12-07 02:33:12
【问题描述】:

我的表单上有 2 个按钮,它们看起来都非常非常扁平。

我似乎找不到让它们看起来更像的方法:

我的按钮的 XAML 是:

<Button x:Name="bttnDailyReport" HorizontalAlignment="Left" Margin="618,27,0,0" VerticalAlignment="Top" Width="121" Height="93" FontFamily="Microsoft Sans Serif" FontSize="20" FontWeight="Bold" Grid.Column="1" BorderBrush="Black">
    <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center"><Run Text="  Generate"/><LineBreak/><Run Text="Daily Report"/></TextBlock>
</Button>
<Button x:Name="bttnCancel" HorizontalAlignment="Left" Margin="618,126,0,0" VerticalAlignment="Top" Width="121" Height="93" FontFamily="Microsoft Sans Serif" FontSize="20" FontWeight="Bold" Click="BttnCancelClick">
    <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center"><Run Text="Exit"/></TextBlock>
</Button>

现在,我的问题是,是否可以让按钮看起来像 WinForms 中的按钮,还是我被平面按钮卡住了?

【问题讨论】:

标签: c# wpf xaml button templating


【解决方案1】:

只需在您的项目中引用 PresentationFramework.Aero.dll 并将此代码添加到窗口的 XAML:

<Window.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="/PresentationFramework.Aero;component/themes/aero.normalcolor.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Window.Resources>

【讨论】:

  • 仅供参考,您需要在本地复制 DLL(添加引用,在解决方案资源管理器中右键单击,属性,CopyLocal 为 true),然后您就可以得到猫皮。此外,如果您希望所有窗口都这样做,您可以添加到 ApplicationResources。这是最少的时间,最多的答案。参考:stackoverflow.com/questions/33386220/…
【解决方案2】:

默认情况下,按钮应该看起来像第二张图片。为确保没有“BoringButton”样式使您的按钮看起来很扁平(正如 Tilak 和 Chris W 建议的那样),请尝试像这样明确清除按钮的样式:

<Button x:Name="bttnDailyReport" Style="{x:Null}" >

另外,不要将按钮的背景设置为特定颜色(尽管在您发布的代码中已经看起来不错)。

【讨论】:

  • 在 WinForms 中,是的,它们看起来确实如此。但不在 WPF 中。
  • @TyrionLannister - 在我制作的所有 WPF(不是 WinForms)项目中,默认情况下按钮看起来类似于“连接”按钮。尝试在 Visual Studio 中创建一个新的“WPF 应用程序”并在 MainWindow 上放置一个按钮。它看起来还是平坦的吗?
  • 我已经做到了,是的,它是平坦的。我在 VS2010 和 VS2012 中都使用了 .NET 4 和 4.5。
  • @TyrionLannister - 好的。在那种情况下,我不知道出了什么问题。在工作中我使用了 VS2010 和 VS2012(.Net 3.5 和 4.0),在家里我使用 VS2010 Express(3.5 和 4.0),默认情况下所有按钮看起来都不错。如果一切都失败了,创建您自己的 ControlTemplate(请参阅 Cris W 的链接)应该可以工作。
【解决方案3】:

似乎,在您的资源中,平面按钮样式被用作按钮的默认样式。

检查Styling and Templating。您需要覆盖按钮中的样式,或者为默认样式指定键,然后在需要的地方应用。

How to override a global style (that doesn't have an x:Key), or alternatively apply a named style to all type-targeted controls?

【讨论】:

  • 终于有时间环顾这些链接了。我花了一点时间来解决它们,但我想出了如何做我想做的事。谢谢。
猜你喜欢
  • 2021-12-12
  • 2021-11-29
  • 1970-01-01
  • 2020-06-12
  • 2016-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-04
相关资源
最近更新 更多