2012-06-06 70 views
1

我正在使用Panorama WP7項目,並且遇到了將我的viewmodels綁定到視圖的問題。由於我的視圖是Panorama,因此我希望爲第一個PanoramaItem創建一個視圖模型,爲第二個PanoramaItem創建第二個視圖模型。WP7 PanoramaItem的第二個PanoramaItem綁定

如果我將x:Name屬性賦予PanoramaItems,但我不想這樣做,因爲MVVM不鼓勵使用x:Name屬性。我試過的替代方法雖然沒有奏效。將整個全景的DataContext設置爲一個viewmodel很容易,但是我沒有第二個全景所需的數據。如果我嘗試在該項Loaded事件處理程序的每個PanoramaItem中分配DataContext,我可以通過Loaded事件處理程序中的sender參數獲取對PanoramaItem的引用,但編譯器會爲第二個Loaded事件處理程序引發錯誤 - 顯然是你無法將Loaded事件分配給一個Panorama中的兩個PanoramaItem。就此而言,我無法將任何事件分配給第二個PanoramaItem。

任何人都可以幫忙嗎?

感謝, 安迪

回答

1

OK,我想它了。這是可能的DataContext的分配使用發件人對象在全景的Loaded事件的全景PanoramaItems,如下所示:

private void HomeViewPanorama_Loaded(object sender, RoutedEventArgs e) 
    { 
     App.VM1 = new ViewModel1(); 
     App.VM2 = new ViewModel2(); 

     if (!App.VM1.IsDataLoaded) 
     { 
      App.VM1.LoadData(); 
     } 

     if (!App.VM2.IsDataLoaded) 
     { 
      App.VM2.LoadData(); 
     } 

     Panorama panorama = sender as Panorama; 
     PanoramaItem Item1 = panorama.Items[0] as PanoramaItem; 
     Item1.DataContext = App.VM1; 

     PanoramaItem Item2= panorama.Items[1] as PanoramaItem; 
     Item2.DataContext = App.VM2; 
    } 

在這個例子中,你必須知道你的PanoramaItems將是什麼,它們不是動態的,但是這種方法可以避免x:在XAML中命名您的控件。

相關問題