RadGridView 模板选择器

3

我正在使用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中的模板选择器不正确。如果您需要更多细节或有不清楚的地方,请告诉我。
谢谢!
1个回答

2

问题已解决。原来RadGridView有一个名为RowDetailsTemplateSelector的属性。使用以下XAML代码:

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

今日免费次数已满, 请开通会员/明日再来

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接