0

WPFアプリケーションでMVVmを使用しています。私は現在、グリッドのアニメーション化を試しているので、ユーザーがコンボボックス内の特定のアイテムを選択したときに、グリッドが拡張するときにアニメーション化する必要があります。ビューモデルに、グリッドでアニメーションをトリガーするためにバインドするプロパティがあります。MVVMでこれをどのように行うのですか?これまでのところ、私は最近、を使用して解決策を見つけました

EventTrigger RoutedEvent ="SampleGridEventName"

他のトリガーを使用してViewModelのプロパティにバインドする方法はありますか?

Trigger BlahBlah ="{Binding ExpandGrid}"
4

1 に答える 1

1

はい。スタイルには、EnterActionsプロパティも持つDataTriggerがあります。アニメーションはリソースに保存されます。それがトリックです。

<UserControl x:Class="TriggerSpike.UserControl1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height="300" Width="300">
<UserControl.Resources>
    <DoubleAnimation x:Key="SearchAnimation" Storyboard.TargetProperty="Opacity" To="1" Duration="0:0:4"/>
    <DoubleAnimation x:Key="StopSearchAnimation" Storyboard.TargetProperty="Opacity" To="0" Duration="0:0:4"/>
</UserControl.Resources>
<StackPanel>
    <TextBlock Name="progressWheel" TextAlignment="Center" Opacity="0">
        <TextBlock.Style>
            <Style>
                <Style.Triggers>
                    <DataTrigger Binding="{Binding IsBusy}" Value="True">
                        <DataTrigger.EnterActions>
                            <BeginStoryboard>
                                <Storyboard>
                                    <StaticResource ResourceKey="SearchAnimation"/>
                                </Storyboard>
                            </BeginStoryboard>
                        </DataTrigger.EnterActions>
                        <DataTrigger.ExitActions>
                            <BeginStoryboard>
                                <Storyboard>
                                   <StaticResource ResourceKey="StopSearchAnimation"/> 
                                </Storyboard>
                            </BeginStoryboard>
                        </DataTrigger.ExitActions>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </TextBlock.Style>
        Searching
    </TextBlock>
    <Label Content="Here your search query"/>
    <TextBox Text="{Binding SearchClause}"/>
    <Button Click="Button_Click">Search!</Button>
    <TextBlock Text="{Binding Result}"/>
</StackPanel>
</UserControl>
于 2012-09-03T04:39:21.327 に答える