【问题标题】:How to bind a List to a WPF treeview using Xaml?如何使用 Xaml 将列表绑定到 WPF 树视图?
【发布时间】:2010-03-20 09:18:16
【问题描述】:

我不知道如何将饮料列表绑定到 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 的代码中指定集合?

【问题讨论】:

  • 您的数据不是分层的。你真的想使用 TreeView 吗?在这种情况下没有多大意义。我认为ListBoxListViewpopularity 上设置排序会更有意义。
  • 谢谢,你是对的,但我开始很简单,因为我不知道 wpf,但稍后实际上会用分层数据替换数据。
  • @Benny:在这个问题上也提出了这一点:stackoverflow.com/questions/2481010/…
  • @Reed 嗯是的。难怪,因为这两个问题几乎相同,而且是由同一个人提出的。

标签: c# .net wpf treeview


【解决方案1】:

通常,您需要确保为 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”文章要慢一些。想我会提到它以防万一。

【讨论】:

  • 谢谢,你提到的第一件事是怎么做的? “通常情况下,你会想要确保......”。我必须这样做吗?
  • 我的coldDrinks 作为实例值在Window1 内。当我运行它时,它根本没有显示任何项目。它必须是静态的吗?
  • @Joan:你可以做“this.DataContext = this;”如果需要,在您的构造函数中,在代码后面。但是,我强烈建议您阅读我在更新中发布的文章 - 这将有助于理解您为什么要做这些事情,而不仅仅是试图让事情顺利进行......
  • @Joan:不。它不需要是静态的。它确实需要是一个属性,而不是一个字段。此外,除非您使用 ObservableCollection 而不是 List,否则您需要确保项目在加载 Window 之前存在,否则绑定将无法正常工作...
  • 谢谢,我会读一读。可能只是您的最后一个链接,因为我不想在开始做任何事情之前阅读 100 页,否则我会对 wpf 感到冷漠。
猜你喜欢
  • 2011-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-22
  • 1970-01-01
  • 2011-12-02
  • 2015-04-23
  • 2016-10-27
相关资源
最近更新 更多