所以我对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;
并且所有内容都显示在树视图中。
答案 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中执行模板要多得多。