2

オブジェクト データ プロバイダーからコンボ ボックス コントロール項目を作成したいと考えています。オブジェクト データ プロバイダーは、カスタム クラスのメソッドを呼び出して項目のリストを取得します。

ただし、カスタム クラスのメソッドは、アイテムのリストを返す前にパラメーターを必要とします。どうすればいいのかわかりません。

これが私の試みです:

オブジェクト データ プロバイダーの宣言:

<ObjectDataProvider x:Key="dataFromEnum" ObjectType="{x:Type ns:MyDataProvider}" MethodName="GetData">
            <ObjectDataProvider.MethodParameters>
                <sys:String>String.Empty</sys:String>
            </ObjectDataProvider.MethodParameters>
        </ObjectDataProvider>

コンボボックス宣言:

<ComboBox Name="combobox" ItemsSource="{StaticResource dataFromEnum}" Tag="{Binding Path=Name}" />

ご覧のとおり、コンボ ボックスの Tag プロパティは、親のデータ コンテキストの Name プロパティにバインドされています。その Name プロパティをオブジェクト データ プロバイダーに渡したいと思います。オブジェクト データ プロバイダーからデータを要求するときに、データをオブジェクト データ プロバイダーに渡す方法がわかりません。

お知らせ下さい。

ありがとう。

4

2 に答える 2

0

メソッドのパラメーターにバインドして値を調整する例がありますが、ここでは実際には当てはまりません...

この課題に直面した場合、コンボ コントロールの ItemsSource にバインドするプロパティを ViewModel で公開しないのはなぜでしょうか?

多くの場合、次のようなものがあります。

public MySomething SelectedSomething { get; set; }
public IEnumerable<MySomething> AvailableSomethings
{
  get { /* Access a factory method or something to return applicable list for this view model state */ }
}

次に、バインディングは次のようになります。

<ComboBox ItemsSource="{Binding path=AvailableSomethings}" SelectedItem="{Binding path=SelectedSomething}"/>
于 2012-09-27T03:04:26.957 に答える