Почему мой MultiDataTrigger запускается только один раз, даже если он удовлетворяет условиям? - PullRequest
0 голосов
/ 06 марта 2019

В попытке еще больше сократить мой код на c #, я попытался обработать анимацию Гамбургер-меню на XAML.Я применил MultiDataTrigger с условием, которое принимает текущую ширину и нажатие кнопки от кнопки меню гамбургера.Он оживляет первую ширину 70 -> 150 и ширину 150 -> 70, но после этого он больше не работает.

    <Grid x:Name="NavigationGrid" Grid.RowSpan="2" Background="Black">
    <StackPanel Margin="0">
        <Button x:Name="HamburgerMenuBtn" Style="{DynamicResource NavigationBtn_Style}"/>
    </StackPanel>
    <Grid.Style>
        <Style TargetType="Grid">
            <Setter Property="Width" Value="70"/>
            <Style.Triggers>
                <MultiDataTrigger>
                    <MultiDataTrigger.Conditions>
                        <Condition Binding="{Binding ElementName=NavigationGrid,Path=ActualWidth}" Value="70"/>
                        <Condition Binding="{Binding ElementName=HamburgerMenuBtn,Path=IsPressed}" Value="True"/>
                    </MultiDataTrigger.Conditions>
                    <MultiDataTrigger.EnterActions>
                        <BeginStoryboard>
                            <Storyboard>
                                <DoubleAnimation
                                        From="70"
                                        To="150"
                                        Duration="0:0:0.5"
                                        Storyboard.TargetProperty="Width"/>
                            </Storyboard>
                        </BeginStoryboard>
                    </MultiDataTrigger.EnterActions>
                </MultiDataTrigger>
                <MultiDataTrigger>
                    <MultiDataTrigger.Conditions>
                        <Condition Binding="{Binding ElementName=NavigationGrid,Path=ActualWidth}" Value="150"/>
                        <Condition Binding="{Binding ElementName=HamburgerMenuBtn,Path=IsPressed}" Value="True"/>
                    </MultiDataTrigger.Conditions>
                    <MultiDataTrigger.EnterActions>
                        <BeginStoryboard>
                            <Storyboard>
                                <DoubleAnimation
                                        From="150"
                                        To="70"
                                        Duration="0:0:0.5"
                                        Storyboard.TargetProperty="Width"/>
                            </Storyboard>
                        </BeginStoryboard>
                    </MultiDataTrigger.EnterActions>
                </MultiDataTrigger>
            </Style.Triggers>
        </Style>
    </Grid.Style>
</Grid>

1 Ответ

0 голосов
/ 06 марта 2019

IsPressed верен только на мгновение. Потерять эту вторую анимацию. Просто используйте первую анимацию, но сделайте ее наоборот. Таким образом, он растет, а затем уменьшает размер. AutoReverse = "истина".

Возможно, вам также придется немного увеличить продолжительность.

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