繁体   English   中英

如何将WPF TreeView绑定到List <Drink> 编程?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM