1

在我的模型中,我有课:

public class Heaviness
{
    public int ID {get; set;}
    public string NameToDisplay {get; set;}
}

在我的视图模型中,我有一个属性 HeavinessList:

public ObservableCollection<Heaviness> HeavinessList {get;set;}

在我的 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>

但是,当我运行应用程序时,显示的是对象名称而不是属性。为什么会这样?

4

1 回答 1

6

您需要将您的属性分配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>

您可以在 MSDN 上阅读有关DataTemplates 的更多信息(这篇文章是关于 WPF 但相同的概念适用于 WP7)

于 2012-02-13T22:58:03.740 回答