我是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:默认情况下,不允许无限网格高度,因为所有网格行都将被渲染,因此网格将非常缓慢地工作。要解决此问题,您应该将网格放置到一个容器中,该容器将为网格提供有限的高度,或者您应该手动指定网格的Height或MaxHeight。请注意,您还可以通过将TreeListControl.AllowInfiniteGridSize静态属性设置为True来避免此异常,但在这种情况下,网格将运行缓慢。
我有点困惑,因为我没有使用网格?任何人都可以指出什么是错的,以及如何在每个导航栏组下添加treview?
谢谢
答案 0 :(得分: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;
}