在另一个树视图WPF中展开子节点

时间:2015-06-17 07:09:28

标签: wpf telerik treeview

我的面板中有两个树视图。

要做: 将节点扩展到第2级。 在第一个树视图中的选择父节点上,它应该在第二个树视图中显示子节点及其详细信息。在新选项卡/新树视图中选择子节点应该打开的父节点。

需要帮助!

  <telerik:RadTreeListView 
            x:Name="Tree1"
            AutoGenerateColumns="False"
            ShowInsertRow="False"
            RowDetailsVisibilityMode="Collapsed"
            RowIndicatorVisibility="Collapsed"
            EnableColumnVirtualization="True"
            EnableRowVirtualization="True"
            SelectionMode="Single"
            SelectionUnit="Cell"
            AlternationCount="2"
            RowHeight="25"
            FontSize="14"
            FontWeight="Bold"
            GroupRenderMode="Flat"
            CanUserInsertRows="False"
            CanUserResizeRows="False"
            CanUserDeleteRows="False"
            CanUserReorderColumns="False"
            CanUserFreezeColumns="False"           
            IsExpandedBinding="{Binding IsExpanded, Mode=TwoWay}"
            IsSynchronizedWithCurrentItem="False"
            Grid.Row="1"
            Visibility="Visible"
            IsReadOnly="True" 
             
            >
            <telerik:RadTreeListView.ChildTableDefinitions>
                <telerik:TreeListViewTableDefinition ItemsSource="{Binding TeamCollection}" />
            </telerik:RadTreeListView.ChildTableDefinitions>
            <telerik:RadTreeListView.Columns>
                <telerik:GridViewDataColumn DataMemberBinding="{Binding Team}" 
                                    Header="Name" IsReadOnly="True" MinWidth="100" HeaderTextAlignment="Center" />        
            </telerik:RadTreeListView.Columns>         
        </telerik:RadTreeListView>

  <telerik:RadTreeListView 
            x:Name="Tree1"
            AutoGenerateColumns="False"
            ShowInsertRow="False"
            RowDetailsVisibilityMode="Collapsed"
            RowIndicatorVisibility="Collapsed"
            EnableColumnVirtualization="True"
            EnableRowVirtualization="True"
            SelectionMode="Single"
            SelectionUnit="Cell"
            AlternationCount="2"
            RowHeight="25"
            FontSize="14"
            FontWeight="Bold"
            GroupRenderMode="Flat"
            CanUserInsertRows="False"
            CanUserResizeRows="False"
            CanUserDeleteRows="False"
            CanUserReorderColumns="False"
            CanUserFreezeColumns="False"           
            IsExpandedBinding="{Binding IsExpanded, Mode=TwoWay}"
            IsSynchronizedWithCurrentItem="False"
            Grid.Row="1"
            Visibility="Visible"
            IsReadOnly="True" 
             
            >
            <telerik:RadTreeListView.ChildTableDefinitions>
                <telerik:TreeListViewTableDefinition ItemsSource="{Binding TeamCollection}" />
            </telerik:RadTreeListView.ChildTableDefinitions>
            <telerik:RadTreeListView.Columns>
                <telerik:GridViewDataColumn DataMemberBinding="{Binding Team}" 
                                    Header="Name" IsReadOnly="True" MinWidth="100" HeaderTextAlignment="Center" />                   
               <telerik:GridViewDataColumn DataMemberBinding="{Binding City}" 
                                    Header="City" IsReadOnly="True" MinWidth="100" HeaderTextAlignment="Center" /> 
            </telerik:RadTreeListView.Columns>         
        </telerik:RadTreeListView>

1 个答案:

答案 0 :(得分:0)

首先,两个TreeView都绑定到相同的ItemsSources(并且具有相同的Name,它们甚至不编译...)。您将要将第二个TreeView绑定到另一个集合,并根据第一个TreeView的SelectedItem修改该集合。

<telerik:RadTreeListView x:Name="Tree1"
                         SelectedItem="{Binding SelectedParentItem}"
                         ...>
    <telerik:RadTreeListView.ChildTableDefinitions>
        <telerik:TreeListViewTableDefinition ItemsSource="{Binding TeamCollection}" />
    </telerik:RadTreeListView.ChildTableDefinitions>
    ...
<telerik:RadTreeListView />

<telerik:RadTreeListView x:Name="Tree2"
                         ...>
    <telerik:RadTreeListView.ChildTableDefinitions>
        <telerik:TreeListViewTableDefinition ItemsSource="{Binding ChildTeamCollection}" />
    </telerik:RadTreeListView.ChildTableDefinitions>
    ...
<telerik:RadTreeListView />

在您的DataContext中,ChildTeamCollection更改时设置SelectedParentItem

private object selectedParentItem;
public object SelectedParentItem
{
    get { return selectedParentItem; }
    set 
    {
        if (selectedParentItem != value)
        {
            selectedParentItem = value;
            ChildTeamCollection = GetChildItemsSource();  // Retrieve the child items of the selected node
        }
    }
}

关于你问题的最后一部分......我仍然不明白你的意思&#34;新标签\ new treeview&#34;。你的意思是在另一个地方有一个全新的TreeView吗?或者你的意思是你的例子中的第二个TreeView?