私は、SharePointリストからフィールド名を入力したいいくつかのコンボボックスを持つSilverlightアプリケーションを持っています。すべてのComboBoxは、このリストとは異なるフィールドを持つことができます。 ComboBoxAは、ユーザーフィールドとComboBoxB番号フィールドを保持します。 ここでは、すべてのComboBoxに対して異なるClientRequestSucceededEventHandlerおよびClientRequestFailedEventHandlerを作成したくありません。私は非同期処理を "シミュレート"したくない。ExecuteQueryAsyncメソッドでargsを渡します。
私の考えでは、これらのイベントハンドラ(先のコンボボックス& Itemsコレクションに例えば参照)にいくつかのparamを渡すことだった:
void UserControl_Loaded(object sender, RoutedEventArgs e)
{
Context = ClientContext.Current;
//load query for getting user fields
Context.ExecuteQueryAsync(fieldsCallback_Succeeded(cbUserFields, userFields), fieldCallback_Failed);
//load query for getting number fields
Context.ExecuteQueryAsync(fieldsCallback_Succeeded(cbUserFields, numberFields), fieldCallback_Failed);
}
void fieldsCallback_Succeeded(object sender, ClientRequestSucceededEventArgs e)
{
FieldsQueryParams queryParams = sender as FieldsQueryParams;
this.Dispatcher.BeginInvoke(() => queryParams.cbToFill = queryParams.Fields);
}
OR
void fieldsCallback_Succeeded(object sender, ClientRequestSucceededEventArgs e, ComboBox cbToFill, IEnumerable<Field> fields)
{
this.Dispatcher.BeginInvoke(() => cbToFill.ItemsSource = fields);
}
そこで質問です:渡す方法これらのイベントハンドラのいくつかのパラメータ(たとえば、宛先コントロールへの参照)。または、この問題を他の方法で解決する方法は?