2012-02-20 5 views
0

간단한 질문과 대답. 클래스 Achievement와 컨트롤 AchievementControl이 표시됩니다. 나는 ItemsSource 및 DataTemplate을사용자 지정 클래스 바인딩

<ListBox ItemsSource={Binding Achievements}> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <controls:AchievementControl Achievement="{Binding}" /> 
     </DataTeplate> 
    </ListBix.ItemTemplate> 
</ListBox> 

으로 목록을 포함하는 목록 상자를 만들려고했다하지만 디버거에서 볼 수 있듯이 그것은 대신 성취 속성 세터에 값으로 System.Windows.Data.Binding 객체를 전송 Achievement 객체이므로 실행이 실패합니다.

+0

바인딩을위한 Path 속성을 할당해야합니다. – Maheep

+0

{Binding Path =.}를 사용하는 경우에도 동일한 방식으로 작동합니다. –

답변

0

AchievementControl이 포함 된 컨트롤에 DataContext가 설정되어 있는지 확인하십시오. 다음의 DataContext는 속성 (예 = MyAchievement)가 있는지 확인

<DataTemplate> 
    <controls:AchievementControl Achievement="{Binding MyAchievement}" /> 
</DataTeplate> 
+0

목록 상자가 있습니다. 목록 의 항목에 바인딩하고 싶습니다. –

+0

확인. 먼저 List가 ObservableCollection인지 확인하십시오. (필요한 경우 Inotify를 구현합니다.) 그런 다음 콜렉션이 무엇이든지 Achievement = "{Binding CollectionName}"에 해당 이름을 넣으십시오. – MyKuLLSKI

0

당신은 당신이 ToString() 메소드를 오버라이드 (override) 아니면 값 변환기를 만드는 데 필요한 성취 클래스와 직접 결합 할 경우 또는 속성 클래스로 바인딩하십시오.

+0

성취도 클래스의 어떤 값 변환기로? –

+0

여기에 xaml을 붙여 넣으십시오. 나는 당신의 datacontext를보고 싶다. – gaurawerma

+0

좋아, 나는 xaml을 질문에 직접 추가했다. –

관련 문제