在整个应用程序中使按钮样式相同

时间:2012-01-11 06:29:19

标签: wpf button

我正在开发WPF窗口应用程序。我是WPF的新手。我想在整个应用程序中使用相同的按钮样式。我知道我们需要在app.xaml中编写样式。我可以编写简单的按钮代码但是我想设置此按钮的图像

请为app.xaml文件建议任何链接/示例代码,以便它适用于整体应用

2 个答案:

答案 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

查看this MSDN article可能也很有用
相关问题