c# - 如何使用 Xaml 将列表绑定(bind)到 WPF TreeView ?

标签 c# .net wpf treeview

我不知道如何将饮料列表绑定(bind)到 WPF TreeView。

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 ) };
        }
    }

我在网上搜索过,比如看到here .但这到底是什么意思:ItemsSource="{x:Static local:TreeTest.BoatList}"

x:? static? local?

如何在 xaml 代码中指定集合?

最佳答案

通常,您需要确保为 UserControl 或 Window 设置 DataContext,然后让您的“coldDrinks”成为一个定义为 DataContext 类中的属性的集合。

如果你这样做,那么所需要的就是:

<TreeView ItemsSource="{Binding ColdDrinks}" />

我强烈建议阅读 WPF's Data Binding model .充分理解这一点是使 WPF 真正有趣的关键。


旁注:考虑到您最近的问题以及您似乎采用的方法,您可能需要考虑花点时间阅读 MVVM 和其他架构方法。即使您不使用 MVVM,描述它的文章也可能会帮助您用 WPF 术语“思考”,这将有很大帮助。

我写了一个关于从 Windows Forms style programming to WPF 迁移的整个系列.它讨论了特定的 WPF 功能,以及为什么您应该改变您的思维方式,但介绍一些概念的速度比大多数纯“MVVM”文章要慢一些。我想我会提到它以防它有帮助。

关于c# - 如何使用 Xaml 将列表绑定(bind)到 WPF TreeView ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2481492/

相关文章:

WPF Styles - 请帮助我理解为什么它会这样工作

wpf - 扩展非选定项目的 TreeView 问题

c# - 离线应用-数据库

c# - 不支持 ToString() 方法

c# - 最大上传长度

C# WMI 代码,用于计算 Windows Server 2008 上挂载点上的可用空间和驱动器空间

c# - 实现 IActionFilter

c# - 当另一个完成使用多线程时启动一个方法

c# - Moq 到 FakeItEasy 的迁移 - 如何迁移Verify()?

wpf - 用于删除 ListView 中的项目的上下文菜单