如何以编程方式将WPF TreeView绑定到List <drink>?</drink>

时间:2010-03-19 22:44:23

标签: c# .net wpf collections treeview

所以我对WPF很新,并尝试将一个Drink值列表绑定或分配给wpf树视图,但不知道如何做到这一点,并发现很难在网上找到任何没有使用xaml。

struct Drink
{
    public string Name { get; private set; }
    public int Popularity { get; private set; }

    public Drink ( string name, int popularity )
        : this ( )
    {
        this.Name = name;
        this.Popularity = popularity;
    }
}

List<Drink> coldDrinks = new List<Drink> ( ){
    new Drink ( "Water", 1 ),
    new Drink ( "Fanta", 2 ),
    new Drink ( "Sprite", 3 ),
    new Drink ( "Coke", 4 ),
    new Drink ( "Milk", 5 ) };
        }
    }

我怎样才能在代码中执行此操作?例如:

treeview1.DataItems = coldDrinks;

并且所有内容都显示在树视图中。

2 个答案:

答案 0 :(得分:2)

你可以设置:

treeView1.ItemsSource = coldDrinks;

但是,我在这里质疑TreeView的使用。您显然显示平坦的非分层数据,因此没有理由使用TreeView。

为什么不使用ListView或ListBox?

答案 1 :(得分:2)

里德说的话。加:

您没有找到编程示例的原因是它不适合在代码中完成。正如Reed所说,你设置了ItemsSource属性,但是这并没有给出你想要的结果。在您的示例中,输出将为:

MyApplication.Drink
MyApplication.Drink
MyApplication.Drink
MyApplication.Drink
MyApplication.Drink

这是因为默认项模板只显示项的ToString()方法的结果。要获取饮料的名称,您需要指定自定义项目模板。这最好在XAML中完成。

    <TreeView x:Name="treeView1">
        <TreeView.ItemTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding Name}" />
            </DataTemplate>
        </TreeView.ItemTemplate>
    </TreeView>

您可以创建模板并将其附加到代码中,但是比在XAML中执行模板要多得多。