我正在使用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应该为null。否则,它应该是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中的模板选择器不正确。如果您需要更多细节或有不清楚的地方,请告诉我。谢谢!