1

私は2つのクラスを持っています

public class leaf
{
    public string name { get; set; }
}

public class node
{
    public ObservableCollection<node> nodeList = new ObservableCollection<node>();
    public ObservableCollection<leaf> leafList = new ObservableCollection<leaf>();
    public ObservableCollection<node> prop_nodeList { get { return nodeList; } set { nodeList = value; } }
    public ObservableCollection<leaf> prop_leafList { get { return leafList; } set { leafList = value; } }

    public string name { get; set; }
}

道路や木のような働きをしているのがわかります。ノードは、別のノードとリーフに関する情報を持つことができます。

そのようにフォーマットされたユーザーコントロールツリーに表示したい

Recursiv ツリーを使用して作成します

nethead はメイン ノードで、2 つの別のノード (b、a) があります。ノード a には、2 つのノード (b、c) と 2 つのリーフ (a1、a2) があります。しかし、私はmvvmでそれをしません。mvvmでそれを行うと、次のようになります

mvvmで作る

C#から私はやっているだけです

this.DataContext = mainNode; // its node which hold everething (its named netHead)

そのxamlから

<Grid>
    <TreeView ItemsSource="{Binding prop_nodeList}">
        <TreeView.Resources>

            <HierarchicalDataTemplate DataType="{x:Type local:node}" ItemsSource="{Binding prop_nodeList}">
                <TextBlock Text="{Binding Path=name}"/>
            </HierarchicalDataTemplate>

            <HierarchicalDataTemplate DataType="{x:Type local:leaf}" ItemsSource="{Binding prop_leafList}">
                <TextBlock Text="{Binding Path=name}"/>
            </HierarchicalDataTemplate>


        </TreeView.Resources>
    </TreeView>
</Grid>

私がやりたいことがわかりますか?TreeView で double treeItem を作成したいのですが、機能しません :( Ant アルゴリズムのプロジェクトを助けてください。教室で最高の GUI を実行したいです。

4

2 に答える 2

1

ルート ノードも表示する場合は、最初に、ItemsSource をルート ノードを含むコレクションに設定する必要があります。

葉が表示されないことについては... HierarchicalDataTemplate ではなく、DataTemplate が必要です。リーフには子コレクションがないため、バインド エラーが原因で正しくレンダリングされていないと思われます。

これは一種の宿題の質問であることに気付いたので、これ以上は続けません。バインディング エラーを確認し (WPF トレースを有効にして、出力ウィンドウでエラーを確認します)、そこから解決してみてください。

于 2013-08-28T11:35:42.363 に答える