2012-10-05 89 views
2

我正在使用RadGridView在網格中顯示一堆項目。對於每個項目,我想根據所給的數據在兩個不同的模板之間切換。一個是基本上彈出一個文本塊的依賴屬性,另一個是另一個RadGridView來顯示一個表。RadGridView模板選擇器

靜態放置時,它們都單獨工作,但我想動態選擇這兩個不同的模板。然而,我的選擇器沒有被調用,因此沒有使用模板。

資源:

<Window.Resources> 
    <DataTemplate x:Key="theBasicView"> 
     <controls:InfoDetailsControl InfoDetail="{Binding InfoDetails}" /> 
    </DataTemplate> 

    <DataTemplate x:Key="theTableView"> 
     <telerik:RadGridView ItemsSource="{Binding DetailsTable}" /> 
    </DataTemplate> 

    <analysis:DetailsTemplateSelector 
     BasicView="{StaticResource theBasicView}" 
     TableView="{StaticResource theTableView}" 
     x:Key="detailsTemplateSelector" 
     /> 
</Window.Resources> 

,問題中的模板選擇:

<telerik:RadGridView.RowDetailsTemplate> 
    <DataTemplate> 
     <ItemsControl 
       ItemTemplateSelector="{StaticResource detailsTemplateSelector}" 
       /> 
    </DataTemplate> 
</telerik:RadGridView.RowDetailsTemplate> 

如果是BasicView,那麼DetailsTable應爲空。否則,它應該是一個TableView。這裏是我的DetailsTemplateSelector:

public class DetailsTemplateSelector : DataTemplateSelector 
{ 
    public DataTemplate BasicView { get; set; } 
    public DataTemplate TableView { get; set; } 

    public override DataTemplate SelectTemplate(object item, DependencyObject container) { 
     FrameworkElement element = container as FrameworkElement; 
     if (element != null && item != null && item is ViewableRuleResult) 
     { 
      ViewableRuleResult ruleResult = item as ViewableRuleResult; 
      Window window = Application.Current.MainWindow; 

      if (ruleResult.DetailsTable == null) 
      { 
       return BasicView; 
      } 
      else 
      { 
       return TableView; 
      }    
     } 
     return null; 
    } 
} 

把一個斷點在SelectTemplate功能從來沒有被擊中。爲什麼我的DetailsTemplateSelector永遠不會被調用?我感覺我的RowDetailsTemplate中的模板選擇器不正確。讓我知道你是否需要更多細節或什麼不清楚。

謝謝!

回答

2

修正了它。原來RadGridView有一個屬性RowDetailsTemplateSelector。使用下面的XAML:

<telerik:RadGridView x:Name="resultsgrid" 
           RowDetailsTemplateSelector="{StaticResource detailsTemplateSelector}" 
           ItemsSource="{Binding ViewableItems}" 
           AutoGenerateColumns="False" 
           Margin="0,0,0,30" 
           IsReadOnly="True" 
           > 

,妥善完全刪除RowDetailsTemplate先前定義的,它現在的功能。

+0

嗨tnw,你能把這個標記爲答案嗎?謝謝 :) –