2014-02-08 11 views
1

Microsoft.Phone.UserData.Contact 유형의 "ContactInfo"라는 속성이있는 클래스가 있습니다. 전화에서 연락처를 읽었고 각 연락처에 대해 클래스의 객체를 만들고 ContactInfo 속성을 설정합니다. 모든 개체는 LongListSelector에 표시된 ObservableCollection에 추가됩니다.Contact 클래스에서 속성을 바인딩하는 방법은 무엇입니까?

C#에서는 ObservableCollection의 데이터 소스에서 요소를 읽고 각 개체의 ContactInfo 속성에서 속성을 읽을 수 있지만 XAML에서는 데이터 템플릿이 속성에 액세스 할 수 없습니다.

데이터 템플릿을 제거하면 object.toString()이 표시되지만 데이터 템플릿을 설정하는 것이 표시되지 않으므로 VS의 출력 탭에 메시지가 표시되므로 LongListSelector의 데이터 소스가 올바르게 설정되어 있다는 것을 알고 있습니다. " 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="{Binding ContactInfo}" > 
+0

감사합니다. 나는 오류를 발견하지 못했습니다. – carlosoj

1

이 올바르게 설정되어이 작동합니다 :

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

는 대신이 방법을 시도해보십시오

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

이 옵션은 너무 효과적이었습니다. 그런 식으로 데이터 빙빙이 가능하다는 것을 몰랐습니다. – carlosoj

관련 문제