2014-02-08 36 views
1

我有一個名爲Microsoft.Phone.UserData.Contact類型的「ContactInfo」屬性的類。 我從手機中讀取聯繫人,併爲每個聯繫人創建我的類的對象並設置屬性ContactInfo。所有對象都添加到LongListSelector中顯示的ObservableCollection中。如何從Contact類綁定屬性?

在C#中,我可以從ObservableCollection的數據源讀取元素,並從每個對象的ContactInfo屬性中讀取屬性,但在XAML中,數據模板無法訪問屬性。

我知道LongListSelector的數據源設置正確,因爲刪除數據模板它顯示object.toString()但設置數據模板什麼都沒有顯示,並且在VS的outpout選項卡中我收到消息「 System.Windows.Data錯誤:BindingExpression路徑錯誤:「顯示名稱」屬性對「的ContactInfo」

我忘記了什麼沒有發現或者是有什麼設置不正確

這是我的模型:

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> 

回答

1

這部分似乎是錯誤的:

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

嘗試它,而不是這樣:

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

謝謝,我沒有注意到這個錯誤。 – carlosoj

1

假設一切是正確的設置,這應該工作:

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

這個選項也起作用,我不知道可以用這種方式寫數據。 – carlosoj