C# 如何从Contact类绑定属性?

C# 如何从Contact类绑定属性?,c#,xaml,data-binding,windows-phone,contacts,C#,Xaml,Data Binding,Windows Phone,Contacts,我有一个类,其属性名为“ContactInfo”,类型为Microsoft.Phone.UserData.Contact。 我从手机上读取联系人,为每个联系人创建一个类的对象,并设置ContactInfo属性。所有对象都添加到一个ObservableCollection中,该集合显示在LongListSelector中 在C#中,我可以从ObservableCollection的数据源读取元素,并从每个对象的ContactInfo属性读取属性,但在XAML中,数据模板无法访问属性 我知道Long

我有一个类,其属性名为“ContactInfo”,类型为Microsoft.Phone.UserData.Contact。 我从手机上读取联系人,为每个联系人创建一个类的对象,并设置ContactInfo属性。所有对象都添加到一个ObservableCollection中,该集合显示在LongListSelector中

在C#中,我可以从ObservableCollection的数据源读取元素,并从每个对象的ContactInfo属性读取属性,但在XAML中,数据模板无法访问属性

我知道LongListSelector的数据源设置正确,因为删除数据模板时会显示object.toString(),但设置数据模板时不会显示任何内容,在VS的Output选项卡中,我会收到消息“System.Windows.Data错误:BindingExpression路径错误:“ContactInfo”上未找到“DisplayName”属性。

我是忘了什么还是有什么设置不正确

这是我的模型:

public class CDContact
{
    public Contact ContactInfo { get; set; }

    public ObservableCollection<CDPhoneNumber> PhoneNumbers{get; set;}

    public CDContact()
    {
        PhoneNumbers = new ObservableCollection<CDPhoneNumber>();
    }
}
公共类CDContact
{
公共联系人联系人信息{get;set;}
公共可观测收集电话号码{get;set;}
公共CDContact()
{
PhoneNumber=新的ObservableCollection();
}
}
这是数据模板:

<DataTemplate x:Key="ContactItemTemplate">
    <StackPanel VerticalAlignment="Top" DataContext="ContactInfo" >
            <TextBlock FontWeight="Bold" Text="{Binding Path=DisplayName, Mode=OneWay}" />
    </StackPanel>
</DataTemplate>

假设其他所有设置都正确,这应该可以工作:

<DataTemplate x:Key="ContactItemTemplate">
    <StackPanel VerticalAlignment="Top" >
        <TextBlock FontWeight="Bold" Text="{Binding Path=ContactInfo.DisplayName, Mode=OneWay}" />
    </StackPanel>
</DataTemplate>

此部分似乎有误:

<StackPanel VerticalAlignment="Top" DataContext="ContactInfo" >

试着这样做:

<StackPanel VerticalAlignment="Top" DataContext="{Binding ContactInfo}" >

这个选项也起作用了,我不知道用这种方式编写数据绑定是可能的。