WPF DataTrigger Навигационный ящик, Анимация - PullRequest
1 голос
/ 23 февраля 2020

Я работаю над c# программой WPF, и у меня есть Навигационный ящик, который должен быть закрыт, когда флажок установлен и открыт, когда флажок не установлен

Вот скриншот из навигации Ящик

[1]: https://i.stack.imgur.com/EpOOn.png

Я пытаюсь сделать это с помощью DataTrigger.

Вот код XAML:

Мои раскадровки:

<Window.Resources>
        <Storyboard x:Key="OpenMenu">
            <DoubleAnimation
                Storyboard.TargetProperty="(Width)"
                From="70"
                To="350"
                Duration="0:0:0.5" />
        </Storyboard>
        <Storyboard x:Key="CloseMenu">
            <DoubleAnimation
                Storyboard.TargetProperty="(Width)"
                From="350"
                To="70"
                Duration="0:0:0.5" />
        </Storyboard>
    </Window.Resources>

И DataTrigger

<Grid.Style>
                <Style TargetType="Grid">
                    <Setter Property="Width" Value="350" />
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding ElementName=CheckBox, Path=IsChecked}" Value="False">
                            <DataTrigger.EnterActions>
                                <BeginStoryboard Storyboard="{StaticResource CloseMenu}" />
                            </DataTrigger.EnterActions>
                        </DataTrigger>
                        <DataTrigger Binding="{Binding ElementName=CheckBox, Path=IsChecked}" Value="True">
                            <DataTrigger.EnterActions>
                                <BeginStoryboard Storyboard="{StaticResource OpenMenu}" />
                            </DataTrigger.EnterActions>
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </Grid.Style>

И CheckBox

<CheckBox Name="CheckBox" />

Проблема в том, что Навигационный ящик остается открытым. Он быстро закрывается и открывается снова, когда я проверяю CheckBox.

Есть идеи?

РЕДАКТИРОВАТЬ:

Это код после ответа BionicCode:

<Grid.Style>
                <Style TargetType="Grid">
                    <Setter Property="Width" Value="70" />
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding ElementName=CheckBox, Path=IsChecked}" Value="True">
                            <DataTrigger.EnterActions>
                                <BeginStoryboard Storyboard="{StaticResource OpenMenu}" />
                            </DataTrigger.EnterActions>
                            <DataTrigger.ExitActions>
                                <BeginStoryboard Storyboard="{StaticResource CloseMenu}" />
                            </DataTrigger.ExitActions>
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </Grid.Style>
...