我有一个类,其名称为“ContactInfo”,类型为Microsoft.Phone.UserData.Contact。 我从手机上读取了联系人,并为每个联系人创建了我的类的对象并设置了ContactInfo属性。所有对象都被添加到一个显示在LongListSelector中的ObservableCollection。
在C#中,我可以从ObservableCollection的数据源中读取元素,并从每个对象的ContactInfo属性中读取属性,但在XAML中,数据模板无法访问属性。
我知道LongListSelector的数据源设置正确,因为删除了数据模板,它显示了object.toString()但是没有显示数据模板,并且在VS的输出选项卡中我收到消息 “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>();
}
}
这是数据模板:
<DataTemplate x:Key="ContactItemTemplate">
<StackPanel VerticalAlignment="Top" DataContext="ContactInfo" >
<TextBlock FontWeight="Bold" Text="{Binding Path=DisplayName, Mode=OneWay}" />
</StackPanel>
</DataTemplate>
答案 0 :(得分:1)
假设其他一切设置正确,这应该可行:
<DataTemplate x:Key="ContactItemTemplate">
<StackPanel VerticalAlignment="Top" >
<TextBlock FontWeight="Bold" Text="{Binding Path=ContactInfo.DisplayName, Mode=OneWay}" />
</StackPanel>
</DataTemplate>
答案 1 :(得分:1)
这部分似乎错了:
<StackPanel VerticalAlignment="Top" DataContext="ContactInfo" >
请尝试这种方式:
<StackPanel VerticalAlignment="Top" DataContext="{Binding ContactInfo}" >