0

私はWPFが初めてで、各ナビゲーションバーグループ内にツリーリストナビゲーションを作成しようとしています。ナビゲーション バー グループとツリーリストの数は動的であるため、XAML で事前に定義するのではなく、コードで作成する必要があります。

これまでのところ、デフォルトのアイテムを使用するのではなく、navbar グループのコンテンツを定義することを目的とした以下をテストしました。

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 に設定することで、この例外を回避することもできますが、その場合、グリッドの実行が遅くなります。

グリッドを使用していないので、少し混乱していますか? 誰が何が問題なのか、各ナビゲーションバーグループの下にトレビューを追加する方法を教えてもらえますか?

ありがとうございました

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 に答える