0

我对 WPF 很陌生,我正在尝试在每个导航栏组中创建一个树列表导航。因为导航栏组和树列表的数量是动态的,所以我必须在代码中制作它们,而不是在 XAML 中预定义它们。

到目前为止,我已经测试了以下内容,这些内容旨在定义导航栏组的内容,而不是使用默认项

private void CreateGroup2(NavBarControl navBar)
{
    NavBarGroup group2 = new NavBarGroup();
    group2.Header = "Custom Content";
    //Specify that the group's content should be defined via the Content property
    group2.DisplaySource = DisplaySource.Content;

    TreeListControl tree = new TreeListControl();
    tree.ItemsSource = TreeList_DataBinding.Stuff.GetStuff();
    group2.Content = tree;


    navBar.Groups.Add(group2);
}

这给出了一个异常:Grid.InfiniteGridSizeException:默认情况下,不允许无限的网格高度,因为所有网格行都将被渲染,因此网格将非常缓慢地工作。要解决此问题,您应该将网格放入一个容器中,该容器将为网格提供有限的高度,或者您应该手动指定网格的高度或 MaxHeight。请注意,您还可以通过将 TreeListControl.AllowInfiniteGridSize 静态属性设置为 True 来避免此异常,但在这种情况下,网格将运行缓慢。

我有点困惑,因为我没有使用网格?任何人都可以提供任何指示出了什么问题以及如何在每个导航栏组下添加一个treview?

谢谢你

4

1 回答 1

0

回答我自己的问题感觉有点不对,但我设法使用以下方法让它工作

private void CreateGroup2(NavBarGroup navBarGroup)
{

    System.Windows.Controls.TreeView treeview = new System.Windows.Controls.TreeView();

    TreeViewItem nod = new TreeViewItem();
    nod.Header = "Tree Node1";
    treeview.Items.Add(nod);

    TreeViewItem nod1 = new TreeViewItem();
    nod1.Header = "Tree Node2";
    treeview.Items.Add(nod1);

    TreeViewItem nod2 = new TreeViewItem();
    nod2.Header = "Tree Node3";
    nod1.Items.Add(nod2);

    //StackPanel stcPnl = new StackPanel(); /optiona
    //stcPnl.Children.Add(treeview);
    //navBarGroup.Content = stcPnl;

    navBarGroup.Content = treeview;

    navBarGroup.DisplaySource = DisplaySource.Content;

}
于 2012-08-21T19:25:29.450 回答