我正在开发WPF窗口应用程序。我是WPF的新手。我想在整个应用程序中使用相同的按钮样式。我知道我们需要在app.xaml中编写样式。我可以编写简单的按钮代码但是我想设置此按钮的图像
请为app.xaml文件建议任何链接/示例代码,以便它适用于整体应用
答案 0 :(得分:0)
为此,您必须覆盖常规按钮模板。在App.Xaml(或任何更适当的位置)中定义以下内容:
<Application.Resources>
<ResourceDictionary>
<Style TargetType="{x:Type Button}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ButtonBase" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:mwt="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Aero">
<Border>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="24"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Image Source="../Resources/Images/foo.png"></Image>
<ContentPresenter Grid.Column="1" RecognizesAccessKey="True" Content="{TemplateBinding ContentControl.Content}" ContentTemplate="{TemplateBinding ContentControl.ContentTemplate}" ContentStringFormat="{TemplateBinding ContentControl.ContentStringFormat}" Margin="{TemplateBinding Control.Padding}" HorizontalAlignment="{TemplateBinding Control.HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding Control.VerticalContentAlignment}" SnapsToDevicePixels="{TemplateBinding UIElement.SnapsToDevicePixels}" />
</Grid>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
</Application.Resources>
此样式没有键,因此适用于所有Button实例。请注意,您必须设置显式类型,而不能为ButtonBase设置。
请注意,这会删除按钮chrome(用简单的边框替换它),如果你想保持原始的chrome首先抓住原始按钮模板并相应地修改它(在ContentPresenter周围包裹一个Grid或DockPanel)并添加图片。
您可以使用“WPF Control Template Viewer”或Expression Blend等工具获取原始模板。
答案 1 :(得分:0)
查看this article了解如何为按钮设置ControlTemplate
...此示例没有<Image>
但是,您应该能够轻松修改示例来源添加一个......因为你想在每个按钮中使用相同的图像,这是一个相对简单的添加,我将它留给你作为一个学习练习。使用ControlTemplates