Как анимировать цвет фона ToggleButton в WPF (xaml)? - PullRequest
0 голосов
/ 05 ноября 2019

Я хотел бы динамически изменить цвет фона ToggleButton в зависимости от его состояния. Вот мой код XAML:

<ToggleButton
    Width="286"
    Height="50"
    x:Name="HistoryToggle"
    IsChecked="{Binding HistoryMode, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
    IsEnabled="True">
    <ToggleButton.Style>
        <Style TargetType="{x:Type ToggleButton}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type ToggleButton}">
                        <Grid
                            x:Name="outerGrid">
                            <Border
                                x:Name="HistoryToggleBorder"                         
                                BorderThickness="0"
                                CornerRadius="4"
                                Background="#1E3555">
                                <TextBlock
                                    HorizontalAlignment="Center"
                                    VerticalAlignment="Center"
                                    FontSize="20"
                                    FontWeight="Regular"
                                    Foreground="White"
                                    Text="MyToggle" />
                            </Border>
                        </Grid>
                        <ControlTemplate.Triggers>

                            <EventTrigger 
                                RoutedEvent="ToggleButton.Checked">
                                <BeginStoryboard>
                                    <Storyboard>
                                        <ColorAnimation

                                            Storyboard.TargetName="HistoryToggleBorder"
                                            Storyboard.TargetProperty="(Border.Background).(SolidColorBrush.Color)"
                                            From="#1E3555"
                                            To="#009ABE"
                                            Duration="0:0:0.15"
                                            FillBehavior="HoldEnd"/>

                                    </Storyboard>
                                </BeginStoryboard>
                            </EventTrigger>

                            <EventTrigger 
                                RoutedEvent="ToggleButton.Unchecked">
                                <BeginStoryboard>
                                    <Storyboard>
                                        <ColorAnimation

                                            Storyboard.TargetName="HistoryToggleBorder"
                                            Storyboard.TargetProperty="(Border.Background).(SolidColorBrush.Color)"
                                            From="#009ABE"
                                            To="#1E3555"
                                            Duration="0:0:0.15"
                                            FillBehavior="HoldEnd"/>

                                    </Storyboard>
                                </BeginStoryboard>
                            </EventTrigger>

                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </ToggleButton.Style>
</ToggleButton>

Когда приложение пытается открыть окно, содержащее мое ToggleButton, выдается исключение:

System.InvalidOperationException: «Имя„ HistoryToggleBorder »не можетнаходится в пространстве имен «System.Windows.Controls.ControlTemplate». '

, и приложение вылетает. Что я делаю не так?

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