为什么我不能将Telerik的RadPanelBar与标准的对象集合一起使用?

时间:2011-06-02 15:48:30

标签: wpf xaml telerik

我正在尝试使用Telerik的RadPanelBar来显示对象列表。我想要在折叠时显示名称,以及展开时显示的对象。出于某种原因,这似乎不起作用。我是否正确使用此控件?

<telerik:RadPanelBar ItemsSource="{Binding Contacts}" />

Control使用正确的项目数正确呈现,但是我无法展开任何项目。我希望这可以呈现为:

<Item Header="{Binding Name}" IsExpanded="False" />
<Item Header="{Binding Name}" IsExpanded="True">
    <ContentControl Content="{Binding }" />
</Item>
<Item Header="{Binding Name}" IsExpanded="False" />
<Item Header="{Binding Name}" IsExpanded="False" />

2 个答案:

答案 0 :(得分:1)

无论出于何种原因,RadPanelBar都需要绑定到集合中的集合。它不适用于单个对象。我使用的解决方法是:

<telerik:RadPanelBar ItemsSource="{Binding Contacts}">
    <telerik:RadPanelBar.ItemTemplate>
        <HierarchicalDataTemplate ItemsSource="{Binding ObnoxiousWorkaroundForTelerik}">
            <TextBlock Text="{Binding Name}" />
            <HierarchicalDataTemplate.ItemTemplate>
                <DataTemplate>
                    <ContentControl Content="{Binding }" />
                </DataTemplate>
            </HierarchicalDataTemplate.ItemTemplate>
        </HierarchicalDataTemplate>
    </telerik:RadPanelBar.ItemTemplate>
</telerik:RadPanelBar>

在我的ContactClass中,我为此添加了一个集合....

private ObservableCollection<AgencyContact> _forTelerik;
public ObservableCollection<AgencyContact> ObnoxiousWorkaroundForTelerik
{
    get
    { 
        if (_forTelerik == null)
        {
            _forTelerik = new ObservableCollection<AgencyContact>();
            _forTelerik.Add(this);
        }
        return _forTelerik;
    }
}

如果有人知道另一种解决方法,不需要我在课堂上创建课程集合,请告诉我!

答案 1 :(得分:0)

我对此控件没有特别的经验,但我知道在其他WPF控件中,如果您尝试显示扩展和折叠的内容,则需要定义HierarchicalDataTemplate。请参阅:http://msdn.microsoft.com/en-us/library/system.windows.hierarchicaldatatemplate.aspx或更多分步方法,请参阅此处:http://blogs.msdn.com/b/mikehillberg/archive/2009/10/30/treeview-and-hierarchicaldatatemplate-step-by-step.aspx

在Telerik论坛上看来,这篇文章看起来像是这样做的一个例子: http://www.telerik.com/community/forums/wpf/panelbar/radpanelbar-datatemplate.aspx