【发布时间】:2023-02-25 16:06:54
【问题描述】:
考虑一个 ListView:
<ListView ItemsSource="{x:Bind People}">
<ListView.ItemTemplate x:DataType="models:Person">
<controls:PersonItem Person="{...}" />
</ListView.ItemTemplate>
</ListView>
在这种情况下,People 是在代码隐藏中定义的 ObservebleCollection<Person> 类型的属性。 Person 类的定义如下:
public class Person : INotifyPropertyChanged
{
public virtual Guid Id { get; set; }
public virtual string Name { get; set; }
// The implemention of INotifyPropertyChanged:
...
}
控件PersonItem 是一个自定义用户控件,定义了DependencyProperty,称为Person,并接收Person 对象作为值。该控件将使用该属性的成员在屏幕上显示一些信息。
我想知道的是,如何将 Person 属性绑定到
数据模板,换句话说,应该用什么来代替第一个代码sn-p中的...?
虽然我知道Person中的属性很少,我可以在我的自定义控件中将它们简单地定义为DependencyProperty,但我遇到的实际情况是我得到了一个有太多属性需要使用的类在一个控件中,那么我需要做的工作就太多了。
【问题讨论】:
-
x:Bind、Binding、Binding Path=.和Binding Path=/都试过了,但是都没有效果所以只能得到null,这是依赖属性Person的默认值。