1

その時点で Nodes が開始されていないため、コードvisualNode.Nodes.AddNullReferenceExceptionを返します。

private XamDataTreeNode LoadTree(XmlNode dataNode, int index)
{
    XamDataTreeNode visualNode = new XamDataTreeNode(index, null, MakeTextBox(dataNode.Name), false, null);

    foreach (XmlNode child in dataNode.ChildNodes)
    {
        visualNode.Nodes.Add(LoadTree(child, VisualChildrenCount));
    }

    visualNode.IsExpanded = true;

    return visualNode;  
}

使用してみましItemsSourceたが、XamDataTreeNode.ItemsSource保護されています。

では、値を入力する方法はXamDataTree?

これは WPF ツリー コントロールではできましたが、Infragistics ツリー コントロールではできませんでした。

編集、さらに明確にします:

@HighCore: 使用したい UI 要素とその外観は、データの分析後にのみ決定できます。

@DJ: データ構造が任意の xml 構造になる場合、どのようにデータバインドしますか?

4

1 に答える 1

0

XamDataTree を、コンテンツとして使用される Label が提供されるツリー構造にマッピングすることで、これを解決しました。標準のPropertyChangedNotifierを使用

public class TreeNode : PropertyChangedNotifier
{
  private Label text;
  private System.Drawing.Image icon;
  private ObservableCollection<TreeNode> children;
}

        <ig:XamDataTree.GlobalNodeLayouts>
            <ig:NodeLayout
                Key="Children"
                DisplayMemberPath="Text"
                TargetTypeName="Model.TreeNode" 
                >
            </ig:NodeLayout>
        </ig:XamDataTree.GlobalNodeLayouts>
于 2013-01-08T12:28:09.817 に答える