C# 为什么可以';我是否在另一个数据网格中嵌套一个RowDetails静态资源?

C# 为什么可以';我是否在另一个数据网格中嵌套一个RowDetails静态资源?,c#,wpf,datagrid,C#,Wpf,Datagrid,为什么GenderTemplateSelectorEsted类不能像其父类一样返回数据模板?为了简洁起见,我简化了代码 错误 类型的未处理异常 中出现“System.Windows.Markup.XamlParseException” PresentationFramework.dll 其他信息:“SchdUtil.genderTemplateSelectorEsted”不是 属性“RowDetailsTemplate”的有效值 XAML 您正在将模板选择器直接指定给模板。您需要改用模板选择器属

为什么GenderTemplateSelectorEsted类不能像其父类一样返回数据模板?为了简洁起见,我简化了代码

错误

类型的未处理异常 中出现“System.Windows.Markup.XamlParseException” PresentationFramework.dll

其他信息:“SchdUtil.genderTemplateSelectorEsted”不是 属性“RowDetailsTemplate”的有效值

XAML


您正在将模板选择器直接指定给模板。您需要改用模板选择器属性

<l:GenderTemplateSelector x:Key="genderTemplateSelector">
    <l:GenderTemplateSelector.MaleTemplate>
        <DataTemplate>
            <DataGrid RowDetailsTemplateSelector="{StaticResource genderTemplateSelectorNested}"
             ...
            </DataGrid>
        </DataTemplate>
    </l:GenderTemplateSelector.MaleTemplate>
</l:GenderTemplateSelector>


就是这样。我为父对象执行了该操作,没有将其复制并粘贴到嵌套的子对象,但使用intellisense将其写入,并丢失了选择器位。我现在觉得很傻。谢谢
public class GenderTemplateSelector : DataTemplateSelector
{
    public DataTemplate MaleTemplate { get; set; }

    public override DataTemplate SelectTemplate(object item, DependencyObject container)
    {
        return MaleTemplate;
    }
}

public class GenderTemplateSelectorNested : DataTemplateSelector
{
    public DataTemplate MaleTemplate { get; set; }

    public override DataTemplate SelectTemplate(object item, DependencyObject container)
    {
        return MaleTemplate;
    }
}
<l:GenderTemplateSelector x:Key="genderTemplateSelector">
    <l:GenderTemplateSelector.MaleTemplate>
        <DataTemplate>
            <DataGrid RowDetailsTemplateSelector="{StaticResource genderTemplateSelectorNested}"
             ...
            </DataGrid>
        </DataTemplate>
    </l:GenderTemplateSelector.MaleTemplate>
</l:GenderTemplateSelector>