我將發佈我的源代碼,然後解釋我的問題。如何使用數據模板將視圖與視圖模型相關聯時,如何將視圖從一個視圖轉換爲另一個視圖
這就是我想要的過渡發生
<Window x:Class="MyApp.MainView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MyApp" Height="600" Width="800">
<StackPanel>
<Button Content="View1" Command="{Binding View1Command}"/>
<Button COntent="View2" Command="{Binding View2Command}"/>
<ContentControl Content="{Binding MyContent}"/>
</StackPanel>
窗口這是相關聯的視圖模型
public class MainViewModel
{
public RelayCommand View1Command{ get; private set;}
public RelayCommand View2Command{ get; private set;}
//INotifyPropertyChanged is implemented of course
public ViewModelBase MyContent { get; set;}
public MainViewModel()
{
View1Command = new RelayCommand(() => { MyContent = new ViewModel1();});
View2Command = new RelayCommand(() => { MyContent = new ViewModel2();});
}
}
在App.xaml中我使用的數據模板將ViewModel1與View1和ViewModel2與View2相關聯。這一切都按預期工作。當點擊按鈕時,視圖改變,數據綁定工作,一切正常。
我現在喜歡做的是在視圖改變時使用動畫。
我需要做什麼來動畫兩個視圖之間的過渡,讓我們說新視圖的動畫淡入淡出。舊視圖消失,新視圖在一秒內消失。
希望你能幫助我。
問候
帕斯卡
附:如果我對數據模板的處理方法沒有意義,並且採用這種方法不可能進行動畫處理,那麼我可以將其他最佳實踐從onw視圖更改爲另一個。我使用的解決方案是由karl shifflet的wpf demo app取得的,但我不知道這是否是我嘗試做的事情的正確解決方案。
沒有足夠的時間來寫出完整的答案,所以這裏是一個快速總結:關鍵點是使用[BoT](https://github.com/thinkpixellab/bot)庫的過渡(樣本文件可以是發現[這裏](https://github.com/thinkpixellab/bot/blob/master/Demo/Wpf/TransitionPresenter/TransitionPresenterPage.xaml))。看一下'TransitionPresenter'控件,它具有'Content'屬性,所以你只需要選擇一個漸變過渡並將'Content'綁定到你的'MyContent' VM屬性。當然,我還沒有嘗試過,但似乎並不困難。 – Snowbear 2011-06-06 08:58:31