2011-04-27 51 views
0

我有一個ItemsControl綁定到集合的ItemsSource,此外我有一個ItemTemplateSelector集。Silverlight4 DataTemplates

它工作得很好,但是DataTemplateSelector只允許我訪問由ItemsSource綁定的項目,但是我想使用Parents DataContext來決定應該使用哪個項目模板。

這在SL4中可以實現嗎?

如果是的話如何實現?

回答

1

感謝您的回覆@Xin,但通過執行以下操作,我設法解決了我的問題。

 private void UserControl_Loaded(object sender, RoutedEventArgs e) 
    { 
     DataTemplate dt = null; 

     switch ((DataContext as PlanViewModel).Plan.Status) 
     { 
      case Infrastructure.Services.Web.PlanStatus.Appraisal: 
       dt = (DataTemplate)this.Resources["Appraisal"]; 
       break; 
      case Infrastructure.Services.Web.PlanStatus.Maintenance: 
       dt = (DataTemplate)this.Resources["Maintenance"]; 
       break; 
      case Infrastructure.Services.Web.PlanStatus.Setting: 
       dt = (DataTemplate)this.Resources["Setting"]; 
       break; 
     } 

     itemsControl1.ItemTemplate = dt; 
    } 
+0

是的,這絕對有效。我認爲這是以mvvm的方式完成的,沒有任何代碼。 :) – 2011-04-28 23:01:05

0

是的。

名稱佈局根 'LayoutRoot',那麼您可以在您的項目模板做

<TextBlock Text="{Binding DataContext.SomeTextInParent, ElementName=LayoutRoot}" /> 

+0

感謝您的迴應,但是如何讓我做出決定選擇哪個模板? – David 2011-04-28 06:01:44

+0

你能否提供給我更多的信息,爲什麼你需要這個DataTemplateSelector?交替地,您可以使用一個具有不同內部網格的模板,然後根據您的條件切換可見性。 – 2011-04-28 06:23:57