当我通过项目源将数据绑定到ListPicker时
C#:
var sightingTypes = SightingTypes.List;
sightingTypesPicker.ItemsSource = sightingTypes;XML:
<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中显示的名称,但是,当我单击ListPicker时,它会显示对象类型的列表,如下所示:
MyProject.Model.SightingType
MyProject.Model.SightingType
MyProject.Model.SightingType
MyProject.Model.SightingType
MyProject.Model.SightingType
MyProject.Model.SightingType我如何:
当列表显示时,使Name属性显示
B:将ID属性绑定为值,但不显示它
发布于 2013-08-18 19:09:20
为此,您需要分配FullModeItemTemplate:
<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:您可以使用SelectedItem DependencyProperty获取所选对象的实例:
使用MVVM方法:
<toolkit:ListPicker x:Name="sightingTypesPicker"
ItemsSource="{Binding SightingTypes}"
SelectedItem="{Binding SelectedSigntingType, Mode=TwoWay}">使用代码隐藏方法:
sightingTypesPicker.SelectionChanged += (s, e) => {
MessageBox.Show(((SightingType)e.AddedItems[0]).ID);
};https://stackoverflow.com/questions/18301957
复制相似问题