C# 使用datatemplate动态加载窗格和特性网格

C# 使用datatemplate动态加载窗格和特性网格,c#,wpf,telerik,datatemplate,C#,Wpf,Telerik,Datatemplate,我正在使用一些telerik组件,并尝试执行以下操作: 我有一个TabCollection,它是ConfigurationTab的一个可观察的集合。我想为这个集合中的每个ConfigurationTab创建一个radPane(我已经管理过这种类型),然后我想让当前选项卡显示一个RadPropertyGrid,我将绑定一个(自定义)属性集合 代码如下: (XAML) 有人能看出我做错了什么吗 编辑 要添加的一件有趣的事情是,如果我将数据模板更改为一个简单的文本框,它不会改变任何内容,我在radpa

我正在使用一些telerik组件,并尝试执行以下操作: 我有一个
TabCollection
,它是
ConfigurationTab
的一个可观察的集合。我想为这个集合中的每个ConfigurationTab创建一个radPane(我已经管理过这种类型),然后我想让当前选项卡显示一个
RadPropertyGrid
,我将绑定一个(自定义)属性集合

代码如下: (XAML)

有人能看出我做错了什么吗

编辑

要添加的一件有趣的事情是,如果我将数据模板更改为一个简单的文本框,它不会改变任何内容,我在radpane=“IOLAN.ModuleConfigurationTester.ConfigurationTab”中看到的唯一内容是,我在尝试打开另一个选项卡时仍然得到一个空引用:

<DataTemplate x:Key="TabCollectionTemplate">
    <telerik:RadPane CanUserClose="False" Header="{Binding DisplayName}">
        <TextBox Text="Hallo" />
    </telerik:RadPane>
</DataTemplate>

过了一段时间,我明白了我必须要做什么,我只需要使用TablControl并设置内容模板,这样做就解决了所有问题:

<UserControl.Resources>
    <DataTemplate x:Key="ContentTemplate">
        <telerik:RadPropertyGrid Name="PropertyGrid"
                                 Margin="0,4,20,4"
                                 assistant:PropertyGridAssistant.AllowDescription="True"
                                 assistant:PropertyGridAssistant.AllowReset="True"
                                 BorderThickness="0,0,0,0"
                                 IsGrouped="True"
                                 Item="{Binding Path=TabPropertyCollection,
                                                UpdateSourceTrigger=PropertyChanged}"
                                 SearchBoxVisibility="Collapsed" />
    </DataTemplate>
    <DataTemplate x:Key="HeaderTemplate">
        <TextBlock Text="{Binding Path=DisplayName}" />
    </DataTemplate>
</UserControl.Resources>
<Grid>
    <telerik:RadDocking>
        <telerik:RadDocking.DocumentHost>
            <DockPanel>
                <telerik:RadTabControl ContentTemplate="{StaticResource ContentTemplate}"
                                       ItemTemplate="{StaticResource HeaderTemplate}"
                                       ItemsSource="{Binding TabCollection}"
                                       SelectedItem="{Binding Path=SelectedItem,
                                                              Mode=OneWayToSource}" />
            </DockPanel>
        </telerik:RadDocking.DocumentHost>
    </telerik:RadDocking>
</Grid>

过了一段时间,我明白了我必须要做什么,我只需要使用TablControl并设置内容模板,这样做就解决了所有问题:

<UserControl.Resources>
    <DataTemplate x:Key="ContentTemplate">
        <telerik:RadPropertyGrid Name="PropertyGrid"
                                 Margin="0,4,20,4"
                                 assistant:PropertyGridAssistant.AllowDescription="True"
                                 assistant:PropertyGridAssistant.AllowReset="True"
                                 BorderThickness="0,0,0,0"
                                 IsGrouped="True"
                                 Item="{Binding Path=TabPropertyCollection,
                                                UpdateSourceTrigger=PropertyChanged}"
                                 SearchBoxVisibility="Collapsed" />
    </DataTemplate>
    <DataTemplate x:Key="HeaderTemplate">
        <TextBlock Text="{Binding Path=DisplayName}" />
    </DataTemplate>
</UserControl.Resources>
<Grid>
    <telerik:RadDocking>
        <telerik:RadDocking.DocumentHost>
            <DockPanel>
                <telerik:RadTabControl ContentTemplate="{StaticResource ContentTemplate}"
                                       ItemTemplate="{StaticResource HeaderTemplate}"
                                       ItemsSource="{Binding TabCollection}"
                                       SelectedItem="{Binding Path=SelectedItem,
                                                              Mode=OneWayToSource}" />
            </DockPanel>
        </telerik:RadDocking.DocumentHost>
    </telerik:RadDocking>
</Grid>

<DataTemplate x:Key="TabCollectionTemplate">
    <telerik:RadPane CanUserClose="False" Header="{Binding DisplayName}">
        <TextBox Text="Hallo" />
    </telerik:RadPane>
</DataTemplate>
<UserControl.Resources>
    <DataTemplate x:Key="ContentTemplate">
        <telerik:RadPropertyGrid Name="PropertyGrid"
                                 Margin="0,4,20,4"
                                 assistant:PropertyGridAssistant.AllowDescription="True"
                                 assistant:PropertyGridAssistant.AllowReset="True"
                                 BorderThickness="0,0,0,0"
                                 IsGrouped="True"
                                 Item="{Binding Path=TabPropertyCollection,
                                                UpdateSourceTrigger=PropertyChanged}"
                                 SearchBoxVisibility="Collapsed" />
    </DataTemplate>
    <DataTemplate x:Key="HeaderTemplate">
        <TextBlock Text="{Binding Path=DisplayName}" />
    </DataTemplate>
</UserControl.Resources>
<Grid>
    <telerik:RadDocking>
        <telerik:RadDocking.DocumentHost>
            <DockPanel>
                <telerik:RadTabControl ContentTemplate="{StaticResource ContentTemplate}"
                                       ItemTemplate="{StaticResource HeaderTemplate}"
                                       ItemsSource="{Binding TabCollection}"
                                       SelectedItem="{Binding Path=SelectedItem,
                                                              Mode=OneWayToSource}" />
            </DockPanel>
        </telerik:RadDocking.DocumentHost>
    </telerik:RadDocking>
</Grid>