ane*_*afr 1 data-binding windows-phone-7 listpicker
在我的模型中,我有课:
public class Heaviness
{
public int ID {get; set;}
public string NameToDisplay {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
在我的视图模型中,我有一个属性HeavinessList:
public ObservableCollection<Heaviness> HeavinessList {get;set;}
Run Code Online (Sandbox Code Playgroud)
在我的xaml中,我添加了ListPicker,项目源绑定到HeavinessList; item的数据模板绑定到Heaviness对象的NameToDisplay属性.
<StackPanel x:Name="HeavinessGroup" Width="220" HorizontalAlignment="Left">
<TextBlock x:Name="HeavinesLabel" Margin="12,0,0,0" TextWrapping="Wrap"
Text="Heaviness:" HorizontalAlignment="Left"/>
<toolkit:ListPicker x:Name="HeavinessListPicker"
SelectedIndex="0"
ItemsSource="{Binding HeavinessList}"
VerticalAlignment="Center">
<DataTemplate>
<TextBlock Text="{Binding NameToDisplay}" />
</DataTemplate>
</toolkit:ListPicker>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)
但是,当我运行应用程序时,我显示的是对象名称,而不是属性.为什么会这样?
您需要将您DataTemplate的ItemTemplate财产分配给该财产,而不是直接将其放入ListPicker:
<toolkit:ListPicker x:Name="HeavinessListPicker"
SelectedIndex="0"
ItemsSource="{Binding HeavinessList}"
VerticalAlignment="Center">
<toolkit:ListPicker.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding NameToDisplay}" />
</DataTemplate>
</toolkit:ListPicker.ItemTemplate>
</toolkit:ListPicker>
Run Code Online (Sandbox Code Playgroud)
您可以在MSDN上阅读有关DataTemplates的更多信息(该文章是关于WPF的,但相同的概念适用于WP7)