Сделайте стиль кнопки одинаковым в общем приложении - PullRequest
0 голосов
/ 11 января 2012

Я занимаюсь разработкой оконного приложения WPF. Я новичок в WPF.Я хочу использовать тот же стиль кнопки в общем приложении.Я знаю, что нам нужно написать стиль в app.xaml.Я могу написать код для простой кнопки, но я хочу установить изображение для этой кнопки

Пожалуйста, предложите любую ссылку / пример кода для файла app.xaml, чтобы он был применим для всего приложения

Ответы [ 2 ]

0 голосов
/ 11 января 2012

Взгляните на эту статью , чтобы узнать, как сделать ControlTemplate для кнопки ... в этом примере нет <Image>, но вы сможете легко изменить исходный код примера.добавить одно ... так как вы хотите использовать одно и то же изображение в каждой кнопке, это относительно простое дополнение, и я оставляю его для вас в качестве учебного упражнения.Вам также может быть полезно посмотреть эту статью MSDN об использовании ControlTemplates

0 голосов
/ 11 января 2012

Для этого вы должны переопределить общий шаблон кнопки.в вашем 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 сначала берет оригинальный шаблон кнопки и соответствующим образом модифицирует его (оберните Grid или DockPanel вокруг ContentPresenter и добавьте изображение).

Вы можете получить исходный шаблон с помощью таких инструментов, как "Просмотрщик шаблонов управления WPF"."или смесь выражения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...