如何在不使用代碼的情況下爲我的viewmodel選擇一個視圖?我想從一個WCF調用中加載大量數據的ListBox。使用Josh Smith的應用程序,視圖在數據到達之前加載,爲空。我想要接收所有數據,然後選擇顯示進度的微調視圖。MVVM - 如何以編程方式爲我的viewmodel選擇一個視圖?
// Completed Method
void _backgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
DataTemplate dataTemplate = new DataTemplate();
//Leaderboards_All_View lb_all_view = new Leaderboards_All_View();
CollectionViewSource collViewSrc = new CollectionViewSource();
dataTemplate.DataType = "Leaderboards_All_View";
List<Leaderboards_All> leaderboardList = e.Result as List<Leaderboards_All>;
allViewModel =
(from lbData in leaderboardList
select new LB_Data_All_ViewModel(lbData, lb_All_ViewModel)).ToList();
foreach (LB_Data_All_ViewModel avm in allViewModel)
avm.PropertyChanged += this.OnLB_Data_All_ViewModelPropertyChanged;
this.AllViewModel = new ObservableCollection<LB_Data_All_ViewModel>(allViewModel);
this.AllViewModel.CollectionChanged += this.OnCollectionChanged;
collViewSrc.Source = AllViewModel;
lb_all_view.DataContext = collViewSrc;
}
但是你問:「如何在不使用代碼的情況下爲我的viewmodel選擇一個視圖?」,這意味着在XAML中。 – 2009-10-06 15:53:20
「以編程方式」推斷使用C#而非XAML,例如Josh Smith的引述:「在更復雜的情況下,可以以編程方式選擇視圖...」,我在上面發佈。不使用後面的代碼是View和ViewModel的分離,這對MVVM很有意義,將表示與邏輯分開。 – Gabriel 2009-10-07 18:33:31