[英]How to bind WPF TreeView to a List<Drink> programmatically?
所以我对WPF很新,并尝试将一个饮料值列表绑定或分配给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;
一切都出现在树视图中。
你可以设置:
treeView1.ItemsSource = coldDrinks;
但是,我在这里质疑TreeView的使用。 您显然显示平坦的非分层数据,因此没有理由使用TreeView。
为什么不使用ListView或ListBox?
里德说的是什么。 加:
您没有找到编程示例的原因是它不适合在代码中完成。 正如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中执行它要费力更多。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.