0

私が持っているもの: アニメーション定義とビュー定義を含むスタイル リソース、データ、プロパティ、および ICommand を含むビューモデル。

現在、アプリケーションは、ボタン クリック (ICommand を使用) を介して VM 機能を呼び出すことができ、VM プロパティにバインドしてビューを表示し、button.click イベント トリガーからアニメーションを実行することができます。

私がやろうとしていること; スタイルがリストボックスに適用されている場合 (たとえば)、VM からアニメーションを直接トリガーするにはどうすればよいですか? IE データの一部のプロパティが変更された場合、アニメーションを実行できますか? UserControl を使用してこれを実行できることはわかっていますが、プログラムをより明確に定義されたビューとビューモデルに分離しようとしています。ビューにコードは必要ありません。また、VM にアニメーションも必要ありません。

4

2 に答える 2

3

button.click イベント トリガーからアニメーションを実行できると言ったとき、あなたはほとんど自分の質問に答えました。実際の答えはイエスです。DataTriggerビュー モデル プロパティにデータ バインドされた を使用してアニメーションを開始するか、同じ方法でEventTriggerカスタムを使用してアニメーションを開始できます。RoutedEvent

<Style>
    <Style.Triggers>
        <DataTrigger Binding="{Binding IsAnimationRunning}" Value="True">
            <DataTrigger.EnterActions>
                <BeginStoryboard>
                    <Storyboard>
                        <SomeAnimation />
                    </Storyboard>
                </BeginStoryboard>
            </DataTrigger.EnterActions>
        </DataTrigger>
    </Style.Triggers>
</Style>

IsAnimationRunningこれにより、プロパティが からfalseに変更されるたびにアニメーションが開始されtrueます。

于 2013-11-06T16:19:30.463 に答える
0

編集:さらなる調査では、必要なものは次のとおりだと思います: Click Event Handler を使用した WPF コマンド

アイデアは、イベント内で ICommand を呼び出して、さらにイベント サブスクリプションを許可する必要があるということです。標準のコマンド バインディング構文をほとんど無視しているため、まだごちゃごちゃしているように感じますが、コマンド バインディングがまだビューにあるため、同じことになります。

于 2013-11-06T16:13:58.487 に答える