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中的模板選擇器不正確。讓我知道你是否需要更多細節或什麼不清楚。
謝謝!
嗨tnw,你能把這個標記爲答案嗎?謝謝 :) –