ListPicker показывает имя объекта вместо свойства - PullRequest
1 голос
/ 14 февраля 2012

В моей модели у меня есть класс:

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

В моей модели просмотра у меня есть свойство HeavinessList:

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

В моем xaml я добавил ListPicker с источником элементов, привязанным к HeavinessList;его шаблон данных для элемента привязан к свойству NameToDisplay объекта Heaviness.

<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>

Однако при запуске приложения вместо свойства отображается имя объекта.Почему это происходит?

1 Ответ

6 голосов
/ 14 февраля 2012

Вам необходимо присвоить 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>

Подробнее о DataTemplates можно узнать на MSDN (статья о WPF, но те же концепции применимы и к WP7)

...