1

私のモデルでは、クラスがあります:

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

私のビューモデルには、プロパティ HeavinessList があります。

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

私の xaml では、アイテム ソースが HeavinessList にバインドされた ListPicker を追加しました。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

あなたDataTemplateItemTemplateプロパティにあなたを割り当てる必要があり、それを直接入れないでください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 に答える