0

リソースセクションに次のセットが含まれるView.xamlがあります。

<DataTemplate DataType="{x:Type ViewModels:MyFirstViewModel}">
    <Views:MyFirstView Content="{Binding}" />
</DataTemplate>

<DataTemplate DataType="{x:Type ViewModels:MySecondViewModel}">
    <Views:MySecondView Content="{Binding}"/>
</DataTemplate>

View.xamlのコンテンツには、次のものがあります。

<!-- SelectedMyViewModel is either set to MyFirstViewModel or MySecondViewModel -->
<ContentControl Content="{Binding SelectedMyViewModel}" />

SelectedMyViewModelが変更されたら、アニメーションを作成して、現在のビューがフェードアウトし、新しいビューがフェードインするようにします...

どういうわけか、これはVisualStateManagerを介して可能になるはずだと思いますが、その方法がわかりません。

これはWPF4.0プロジェクトです...

4

1 に答える 1

0

WPFフェードアニメーションを支援するために、この質問の答えを得ることができるかもしれません。

彼らは可視性に関してFadeIn/FadeOutを行っています。トリガーを...から変更できる可能性があります。

<Trigger Property="Visibility" Value="Visible">

に...

<Trigger Property="Content" Value="{x:Null}">

だから私の考えは、ViewModels間を移行するときに次のようなことをするということです

public void SwapViewModels()
{
    // SelectedMyViewModel contains a MyFirstViewModel
    // Setting to null fires the Animation to fadeout
    SelectedMyViewModel = null;

    // Setting the Value to anything but null, should fire the fadein animation
    SelectedMyViewModel = new MySecondViewModel();
}

私はコードをテストしていませんが、うまくいけば、それはあなたに出発点を与えるでしょう。

于 2010-05-29T02:03:28.823 に答える