1

Xaml コンボボックスをバインドしています。Stackpanel または List を使用できますか? そのような方法でデータをバインドする方法を説明できますか?

4

1 に答える 1

3

まず、表示する画像とテキストの URI のパブリック プロパティを持つデータが必要です。以下に使用する簡単な例を示します。

public class ImageOption
{
    public string ImageUri { get; set; }
    public string ImageText { get; set; }
}

次に、そのデータ項目のコレクションを保持する別のパブリック プロパティが必要になります。このプロパティは、ビューのどこかに DataContext として設定できるか、コード ビハインドで ComboBox に直接割り当てることができるオブジェクト上にある必要があります。

  public ObservableCollection<ImageOption> ImageList { get; private set; }

ComboBox の親要素の DataContext が ImageList プロパティを含むオブジェクトに割り当てられていると仮定すると、これを使用してコレクションをバインドし、各項目の単純な画像とテキストを表示できます。

<ComboBox ItemsSource="{Binding ImageList}">
    <ComboBox.ItemTemplate>
        <DataTemplate>
            <StackPanel>
                <Image Source="{Binding Path=ImageUri}" />
                <TextBlock Text="{Binding Path=ImageText}"/>
            </StackPanel>
        </DataTemplate>
    </ComboBox.ItemTemplate>
</ComboBox>

MaxWidth や MaxHeight を設定して、画像のサイズを制限することもできます。

于 2013-02-06T14:24:06.627 に答える