Я хочу повторно использовать блок «Стиль» кнопки «Первая кнопка» и для других кнопок. Как это сделать? - PullRequest
0 голосов
/ 19 октября 2019

Я пишу простой код для эффекта MouseEnter для кнопки. Есть также 2 другие кнопки, где я хочу такой же эффект. Вместо того, чтобы снова писать тот же код, как я могу их повторно использовать?

<Button Content="Common Factor" FontSize="32" Foreground="White"
 Background="#FF3399FF" Width="250" Height="60" Margin="20" >
                <Button.Style>
                    <Style TargetType="Button">
                        <Style.Triggers>
                            <EventTrigger RoutedEvent="MouseEnter">
                                <BeginStoryboard>
                                    <Storyboard>
                                        <DoubleAnimation Duration="0:0:0.500" Storyboard.TargetProperty="Width" To="300"/>
                                        <DoubleAnimation Duration="0:0:0.500" Storyboard.TargetProperty="Height" To="80"/>
                                    </Storyboard>
                                </BeginStoryboard>
                            </EventTrigger>
                        </Style.Triggers>
                    </Style>
                </Button.Style>
            </Button>

            <Button Content="Common Factor" FontSize="32" Foreground="White" Background="#FF3399FF" Width="250" Height="60" Margin="20"/>
            <Button Content="Common Factor" FontSize="32" Foreground="White" Background="#FF3399FF" Width="250" Height="60" Margin="20"/>

Ответы [ 2 ]

2 голосов
/ 20 октября 2019

Чтобы ответить на ваш вопрос

Вы можете объявить свой Style в ResourceDictionary следующим образом:

<Window.Resources>
    <Style TargetType="Button" x:Key="MyButtonStyle">
        <Style.Triggers>
            <EventTrigger RoutedEvent="MouseEnter">
                <BeginStoryboard>
                    <Storyboard>
                        <DoubleAnimation Duration="0:0:0.500" Storyboard.TargetProperty="Width" To="300"/>
                        <DoubleAnimation Duration="0:0:0.500" Storyboard.TargetProperty="Height" To="80"/>
                    </Storyboard>
                </BeginStoryboard>
            </EventTrigger>
        </Style.Triggers>
    </Style>
</Window.Resources>

Дав ключ к нему (здесь, "MyButtonStyle"), вы можете ссылаться на него из других мест, используя разметку StaticResource:

<Button Style="{StaticResource MyButtonStyle}" Content="Common Factor" FontSize="32" Foreground="White" Background="#FF3399FF" Width="250" Height="60" Margin="20"/>
<Button Style="{StaticResource MyButtonStyle}" Content="Common Factor" FontSize="32" Foreground="White" Background="#FF3399FF" Width="250" Height="60" Margin="20"/>
<Button Style="{StaticResource MyButtonStyle}" Content="Common Factor" FontSize="32" Foreground="White" Background="#FF3399FF" Width="250" Height="60" Margin="20"/>

Чтобы перейти дальше со стилями

Примечаниечто если вы не укажете ключ объяснения для Style, удалив разметку x:Key="MyButtonStyle", тогда ваш Style автоматически будет применен ко всем Controls без явного набора свойств Style. Например, Style, определенный следующим образом:

<Window.Resources>
    <Style TargetType="Button">
        <Style.Setters>
            <Setter Property="Background" Value="Red"/>
        </Style.Setters>
    </Style>
</Window.Resources>

будет автоматически применяться ко всем Buttons в Window, которые не имеют явного атрибута Style.

1 голос
/ 19 октября 2019

Вы можете сохранить свой стиль в любом объекте словаря ресурсов, например MergedDictionary в App.xaml или Window.Resources:

<Window.Resources>
                <Style TargetType="Button" x:Key="myStyle">
                    <Style.Triggers>
                        <EventTrigger RoutedEvent="MouseEnter">
                            <BeginStoryboard>
                                <Storyboard>
                                    <DoubleAnimation Duration="0:0:0.500" Storyboard.TargetProperty="Width" To="300"/>
                                    <DoubleAnimation Duration="0:0:0.500" Storyboard.TargetProperty="Height" To="80"/>
                                </Storyboard>
                            </BeginStoryboard>
                        </EventTrigger>
                    </Style.Triggers>
                </Style>
</Window.Resources>

, и использовать его повторно, создавая объекты типа StaticResource:

<Button Style="{StaticResource myStyle}" Content="Common Factor" FontSize="32" Foreground="White" Background="#FF3399FF" Width="250" Height="60" Margin="20"/>
<Button Style="{StaticResource myStyle}" Content="Common Factor" FontSize="32" Foreground="White" Background="#FF3399FF" Width="250" Height="60" Margin="20"/>
<Button Style="{StaticResource myStyle}" Content="Common Factor" FontSize="32" Foreground="White" Background="#FF3399FF" Width="250" Height="60" Margin="20"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...