WPF - Поместите доску рассказов в словарь ресурсов - PullRequest
0 голосов
/ 05 ноября 2018

В моем MainWindow.xaml есть эта доска рассказов, которая в основном скрывает и отображает сетку.

<Storyboard x:Key="MenuOpen">
    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(FrameworkElement.Width)" Storyboard.TargetName="GridMenu">
        <EasingDoubleKeyFrame KeyTime="0" Value="50"/>
        <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="150"/>
    </DoubleAnimationUsingKeyFrames>
</Storyboard>
<Storyboard x:Key="MenuClose">
    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(FrameworkElement.Width)" Storyboard.TargetName="GridMenu">
        <EasingDoubleKeyFrame KeyTime="0" Value="150"/>
        <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="50"/>
    </DoubleAnimationUsingKeyFrames>
</Storyboard>

<Window.Triggers>
    <EventTrigger RoutedEvent="ButtonBase.Click" SourceName="btnOpenMenu">
        <BeginStoryboard Storyboard="{StaticResource MenuOpen}"/>
    </EventTrigger>
    <EventTrigger RoutedEvent="ButtonBase.Click" SourceName="btnCloseMenu">
        <BeginStoryboard Storyboard="{StaticResource MenuClose}"/>
    </EventTrigger>
</Window.Triggers>

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

<Window.Triggers>
    <EventTrigger RoutedEvent="ButtonBase.Click" SourceName="btnOpenMenu">
        <BeginStoryboard Storyboard="{StaticResource MenuOpen}"/>
    </EventTrigger>
    <EventTrigger RoutedEvent="ButtonBase.Click" SourceName="btnCloseMenu">
        <BeginStoryboard Storyboard="{StaticResource MenuClose}"/>
    </EventTrigger>
</Window.Triggers>

Можно ли поместить триггеры в словарь ресурсов или я должен использовать другой способ? Если это возможно, как правильно заставить это работать?

Привет.

1 Ответ

0 голосов
/ 05 ноября 2018

Вы можете определить EventTriggers как ресурсы, подобные этому:

<Storyboard x:Key="MenuOpen">
    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(FrameworkElement.Width)" Storyboard.TargetName="GridMenu">
        <EasingDoubleKeyFrame KeyTime="0" Value="50"/>
        <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="150"/>
    </DoubleAnimationUsingKeyFrames>
</Storyboard>
<Storyboard x:Key="MenuClose">
    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(FrameworkElement.Width)" Storyboard.TargetName="GridMenu">
        <EasingDoubleKeyFrame KeyTime="0" Value="150"/>
        <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="50"/>
    </DoubleAnimationUsingKeyFrames>
</Storyboard>

<EventTrigger x:Key="et" RoutedEvent="ButtonBase.Click" SourceName="btnOpenMenu">
    <BeginStoryboard Storyboard="{StaticResource MenuOpen}"/>
</EventTrigger>

<EventTrigger x:Key="et2" RoutedEvent="ButtonBase.Click" SourceName="btnCloseMenu">
    <BeginStoryboard Storyboard="{StaticResource MenuClose}"/>
</EventTrigger>

... и ссылаться на них в таком окне:

<Window.Triggers>
    <StaticResource ResourceKey="et" />
    <StaticResource ResourceKey="et2" />
</Window.Triggers>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...