2013-08-18 3 views
1

I가 항목 소스를 통해 내 데이터를 바인딩 내 ListPicker :WP8 ListPicker 바인딩

C 번호 : 나는 이름을 볼 수 있습니다

<toolkit:ListPicker x:Name="sightingTypesPicker" ItemsSource="{Binding sightingTypes, ElementName=this}"> 
     <toolkit:ListPicker.ItemTemplate> 
      <DataTemplate> 
       <StackPanel> 
        <TextBlock Text="{Binding Name}" FontSize="{StaticResource PhoneFontSizeSmall}"/> 
       </StackPanel> 
      </DataTemplate> 
     </toolkit:ListPicker.ItemTemplate> 
    </toolkit:ListPicker> 

ListPicker에 표시되는 : XML은

var sightingTypes = SightingTypes.List; 
sightingTypesPicker.ItemsSource = sightingTypes; 

, 그러나 ListPicker를 클릭하면 Object Type의 List가 다음과 같이 표시됩니다.

MyProject.Model.SightingType 
MyProject.Model.SightingType 
MyProject.Model.SightingType 
MyProject.Model.SightingType 
MyProject.Model.SightingType 
MyProject.Model.SightingType 

할 방법 I :

A : 목록

B를 표시 할 때 Name 속성 표시를 확인 : 그것은

+0

죄송합니다, 감사합니다. – Subby

+1

ItemsSource를 코드에 한 번, XAML에 두 번 할당하는 이유는 무엇입니까? –

답변

3

당신이 FullModeItemTemplate를 할당 할 필요가 보여 값으로 ID 속성 바인딩하지만 그 작동합니다 :

<toolkit:ListPicker x:Name="sightingTypesPicker" ItemsSource="{Binding sightingTypes, ElementName=this}"> 
    <toolkit:ListPicker.ItemTemplate> 
     <DataTemplate> 
      <StackPanel> 
       <TextBlock Text="{Binding Name}" FontSize="{StaticResource PhoneFontSizeSmall}"/> 
      </StackPanel> 
     </DataTemplate> 
    </toolkit:ListPicker.ItemTemplate> 
    <toolkit:ListPicker.FullModeItemTemplate> 
     <DataTemplate> 
      <StackPanel> 
       <TextBlock Text="{Binding Name}" FontSize="{StaticResource PhoneFontSizeSmall}"/> 
       <TextBlock Text="{Binding SomeOtherProp}" FontSize="{StaticResource PhoneFontSizeSmall}"/> 
      </StackPanel> 
     </DataTemplate> 
    </toolkit:ListPicker.FullModeItemTemplate> 
</toolkit:ListPicker> 

편집는 : 귀하의 질문에 대답하기 위해 B : MVVM 접근 방식

: : 선택한 개체의 인스턴스를 얻기 위해 selectedItem가하는 DependencyProperty를 사용할 수있는 코드 숨김 방식으로

<toolkit:ListPicker x:Name="sightingTypesPicker" 
        ItemsSource="{Binding SightingTypes}" 
        SelectedItem="{Binding SelectedSigntingType, Mode=TwoWay}"> 

:

sightingTypesPicker.SelectionChanged += (s, e) => { 
    MessageBox.Show(((SightingType)e.AddedItems[0]).ID); 
}; 
+0

대단히 New Dev. – Subby