Изменение формы кнопки в wpf - PullRequest
2 голосов
/ 11 июля 2019

Я хочу изменить кнопку, чтобы она имела форму эллипса.Я использую приложение wpf.

Я видел некоторые ответы, кто-то предлагал "простую" вещь, но я не получил ее. Также я не хочу добавлять изображение (это был ответ на вопростоже).

Ответы [ 2 ]

3 голосов
/ 11 июля 2019

Попробуйте следующее в XAML,

    <Button Click="Button_Click">
        <Button.Template>
            <ControlTemplate TargetType="Button">
                <Grid>
                    <Ellipse Fill="{TemplateBinding Background}"/>
                    <ContentPresenter/>
                </Grid>
            </ControlTemplate>
        </Button.Template>
    </Button>
1 голос
/ 12 июля 2019

Предоставленный ответ верен, если вы планируете применить его к одной кнопке, но реальный вопрос, если вы хотите использовать один и тот же шаблон для нескольких кнопок, это будет проблемой.Для этого, пожалуйста, следуйте приведенному ниже методу

Сначала создайте новый словарь ресурсов с именем "Style.xaml" (имя примера) и добавьте в него следующие стили

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                xmlns:local="clr-namespace:SampleCodeWorkSpace">

<Style TargetType="Button" x:Key="EllipseButton">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="Button">
                <Grid>
                    <Ellipse Fill="{TemplateBinding Background}"/>
                    <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center">
                    </ContentPresenter>
                </Grid>
            </ControlTemplate>

        </Setter.Value>
    </Setter>
</Style>

<Style TargetType="Button" x:Key="RoundedButton">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="Button">
                <Border CornerRadius="8" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}"  
                            BorderThickness="1">
                    <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center">
                    </ContentPresenter>
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

Добавьте ссылку на словарь ресурсов в App.xaml

<Application x:Class="SampleCodeWorkSpace.App"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:local="clr-namespace:SampleCodeWorkSpace"
         StartupUri="MainWindow.xaml">
<Application.Resources>
    <ResourceDictionary Source="Styles.xaml"></ResourceDictionary>
</Application.Resources>

Добавьте стиль к необходимой кнопке в показанном ниже способе показа

<Button Content="Button" Foreground="Black" HorizontalAlignment="Left"  VerticalAlignment="Top" Width="328" Height="188" Click="Button_Click" Style="{StaticResource EllipseButton}" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...