簡體   English   中英

MVVM WP7 - 頁面導航和過渡動畫

[英]MVVM WP7 - Page navigation and transition animation

我是WP7中MVVM模型的初學者。 我無法實現頁面之間的導航以及動畫過渡。

我想要實現的目標:

  1. Page1導航到Page2時,將啟動過渡動畫animation1 ,但當Page1導航到Page3時,將啟動不同的過渡動畫animation2

  2. ViewModel可以取消GoBack導航,例如當搜索模式打開時(TextBox可見,用戶按下后退鍵,TextBox將被隱藏,ViewModel將切換到搜索模式,並阻止頁面導航回來)

我創建了這樣的東西:

ExtendedPhoneApplicationPage:PhoneApplicationPage - 特殊控件,從PhoneApplicationPage繼承,通過接口INavigation調用對ViewModel的請求

MainViewModel:INavigation - MainViewModel,它是ViewModel,並實現接口INavigation。

這個怎么運作 ?

  1. 用戶單擊后退鍵
  2. ExtendedPhoneApplicationPage詢問MainViewModel(或實現INAVigation的不同)現在應該開始什么動畫
  3. MainViewModel將正確的動畫返回給View

MVVM是否正確? 如果沒有,怎么能實現這個?

編輯:

可能我上面寫的不是很好的解決方案,我讀到ViewModel應該只與View by Data Binding和Command通信。 今天我在想這個,我明白了。

在XAML中應該是這樣的:

<Navigation>
        <NavigationInTransition>
            <NavigationInTransition.ForwardTransitions>
                <ForwardTransition NavigateTo="page2.xaml">
                    <ForwardTransition.Animation>
                        <SlideTransitionAnimation Mode="ForwardIn"/>
                    </ForwardTransition.Animation>
                </ForwardTransition>
                <ForwardTransition NavigateTo="page3.xaml">
                    <ForwardTransition.Animation>
                        <TurnstyleTransitionAnimation Mode="ForwardIn"/>
                    </ForwardTransition.Animation>
                </ForwardTransition>
            </NavigationInTransition.ForwardTransitions>
        </NavigationInTransition>
        <BackKeyPressed IsPrevent="{Binding SomethingBool}" Command="{Binding BackKeyPressed}"/>
</Navigation>

在App.xaml中創建資源

  <Style x:Key="PageStyle" TargetType="phone:PhoneApplicationPage">
  <Setter Property="toolkit:TransitionService.NavigationInTransition">
    <Setter.Value>
      <toolkit:NavigationInTransition>
        <toolkit:NavigationInTransition.Backward>
          <toolkit:TurnstileTransition Mode="BackwardIn" />
        </toolkit:NavigationInTransition.Backward>
        <toolkit:NavigationInTransition.Forward>
          <toolkit:TurnstileTransition Mode="ForwardIn" />
        </toolkit:NavigationInTransition.Forward>
      </toolkit:NavigationInTransition>
    </Setter.Value>
  </Setter>
  <Setter Property="toolkit:TransitionService.NavigationOutTransition">
    <Setter.Value>
      <toolkit:NavigationOutTransition>
        <toolkit:NavigationOutTransition.Backward>
          <toolkit:TurnstileTransition Mode="BackwardOut" />
        </toolkit:NavigationOutTransition.Backward>
        <toolkit:NavigationOutTransition.Forward>
          <toolkit:TurnstileTransition Mode="ForwardOut" />
        </toolkit:NavigationOutTransition.Forward>
      </toolkit:NavigationOutTransition>
    </Setter.Value>
  </Setter>
</Style>

對於具有過渡Style =“{StaticResource PageStyle}”的頁面

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM