2

aのアイテムのa のcombobox中に a がある場合。ハードコーディングせずに項目を設定するにはどうすればよいですか? コードビハインドからその名前でアクセスすることは不可能であり、私はそのアプローチさえ好きではありません。DataTemplateItemsControlcomboboxcombobox

<ItemsControl>
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <ComboBox x:Name="aComboBox" />
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

combobox' 外部データストアから取得した値を設定する標準的な方法はありますか?

4

1 に答える 1

2

これはやや厄介な回避策ですが、関連するリスト データを提供するアイテムごとのデータ ソースにプロパティを追加することを検討しましたか? これは何も複製する必要はありません - 基になるデータ ソースを参照できます。

public class MyItemViewModel
{
    public IList<string> ComboBoxItems { get { return MySource.ItemList; } }
    ...
}

ItemsControlその後、アイテム テンプレートからこれにバインドできます。

これは、項目のデータ ソースとしてのみ機能することを目的とするクラスがある場合にのみ機能します。基になるモデル オブジェクトに直接バインドする場合、これはあまり実用的ではありません。ただし、通常は、さまざまな理由から、別のレイヤー (ViewModel レイヤーなど) を追加することをお勧めします。

または、名前付きリソースを介してデータを利用できるようにすることはできますか? DataContext={StaticResource myData}item を参照するデータ コンテキストの問題から逃れるために、これを書くことができます。

于 2013-02-05T15:06:09.293 に答える