【问题标题】:XAML binding to cellectionXAML 绑定到集合
【发布时间】:2018-10-13 17:02:55
【问题描述】:

我有一个类,将其命名为 People,它实现了 INotifyPropertyChanged 并具有两个属性:Name 和 Surname。

public IList<People> myCollection;
myCollection = new ObservableCollection<People>();
myCollection.add(new People("Jerry", "Jerry");
myCollection.add(new People("Tom", "Tom");

在 XAML 中,我有一个名为“ListOfNames”的列表框 我能做到:

ListOfNames.ItemsSource = myCollection;

一切正常。我的问题是,如何通过 XAML 将 myCollection 分配为 ItemsSource?

使用单个对象,例如:

People myPerson = new People("Tom", "Tom");

<Window.Resources>
   <local:People x:Key="myPerson" />
</Window.Resources>

<label Content="{Binding source={StaticResource myPerson}}" />

绑定工作正常。但是,如果我尝试使用列表:

<Window.Resources>
   <local:People x:Key="myCollection" />
</Window.Resources>

<ListBox ItemsSource="{Binding source={StaticResource myCollection}}" />

它不显示任何内容。显然,我误解了某些事情并且做错了。我假设它需要一个对象“人”,而获取对象列表会使它感到困惑,这意味着应该以不同的方式引用列表。请问应该怎么做。

【问题讨论】:

标签: c# xaml binding observablecollection


【解决方案1】:

你不能绑定到一个字段,你必须bind to a property

public ObservableCollection<> MyCollection
{
    get { return _myCollection; }
    set { _myCollection = value; }
}

<ListBox ItemsSource="{Binding Path=MyCollection}" />

只要您在窗口级别正确设置了 DataSource,这将起作用。

【讨论】:

    猜你喜欢
    • 2016-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-19
    • 2013-03-01
    • 1970-01-01
    • 2011-04-12
    • 2011-02-10
    相关资源
    最近更新 更多