【问题标题】:What does 'ItemsSource="{Binding}"' mean?'ItemsSource="{Binding}"' 是什么意思?
【发布时间】:2011-04-21 21:55:20
【问题描述】:

我正在尝试通过解开一个在我之前从事这项工作的人编写的坦率的噩梦项目来学习 WPF。抱歉,如果我的一些问题几乎是家庭作业级别的,但我正在尝试弄清楚现有 XAML 的作用,但对它背后的概念理解不足......

无论如何,我有一个 ListView,它的定义是这样的:

<ListView 
    DataContext="{StaticResource XMLFileGroups}"
    ItemContainerStyle="{StaticResource XMLItemStyle}"
    ItemsSource="{Binding}">

现在,我可以大致了解“DataContext”和“ItemContainerStyle”行的作用;它们似乎分别引用了一种对现有列表进行排序的方法,以及分别定义了 ListView 的某些视觉行为的结构。

让我崩溃的是 ItemsSource 被列为“{Binding}”。对我说的只是存在某种数据绑定,但我不明白该行如何可能有意义,但删除它会阻止显示任何数据。

有人能解释一下这里发生了什么,或者我应该在哪里寻找实际的绑定定义吗?我只是不明白我在这里看到了什么。

【问题讨论】:

    标签: .net wpf xaml


    【解决方案1】:

    如果没有路径,{Binding} 将绑定到 DataContext 本身。
    添加路径将绑定到数据上下文的属性。

    【讨论】:

    • 所以“{Binding}”专门链接回由 ListView 的 DataContext 属性创建的集合?这是视图类型对象通常发生的事情还是特定于 ListView?抱歉乞求更多信息,但我相信你会明白搜索 'ItemsSource="{Binding}"' 的搜索范围不够窄,无法获得很多结果,因此我首先问了这个问题地方...
    • 我不确定你在问什么。 {Binding} 可用于您要绑定的值是 DataContext 本身的任何上下文。它最常用于绑定数据源。
    • 我以为是这样,但我不能确定。感谢您的澄清。
    【解决方案2】:

    该示例指定绑定 DataContext。后面代码中的相同内容是

    MyList.ItemsSource = new Binding();
    

    您还可以执行以下操作:

    ItemsSource="{Binding YourBindingField, Source={StaticResource YourStaticDataSource}}"
    

    这将在后面的代码中转换为:

            MyList.ItemsSource = new Binding() {ElementName = "YourBindingField", Source = YourStaticDataSource};
    

    希望有帮助

    【讨论】:

    • 抱歉,我没有提到我正在做的是(理论上)一个 MVVM 项目,所以没有任何代码隐藏。虽然我确信你说的是正确的,但我没有任何上下文可以解释它。
    猜你喜欢
    • 2014-03-19
    • 2013-01-04
    • 2012-02-16
    • 2015-05-09
    • 1970-01-01
    • 2010-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多