SharePoint リストのフィールド名を入力したいコンボ ボックスがいくつかある Silverlight アプリがあります。すべての ComboBox は、このリストから異なるフィールドを持つことができます。たとえば、ComboBoxA はユーザー フィールドを保持し、ComboBoxB は数値フィールドを保持します。ここで、ComboBox ごとに異なる ClientRequestSucceededEventHandler と ClientRequestFailedEventHandler を作成したくありません。非同期処理も「シミュレート」したくありません。
私の考えは、これらのイベント ハンドラーにいくつかのパラメーターを渡すことでした (たとえば、宛先コンボ ボックスとアイテム コレクションへの参照)。
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);
}
また
void fieldsCallback_Succeeded(object sender, ClientRequestSucceededEventArgs e, ComboBox cbToFill, IEnumerable<Field> fields)
{
this.Dispatcher.BeginInvoke(() => cbToFill.ItemsSource = fields);
}
問題は、これらのイベント ハンドラーにパラメーターを渡す方法です (たとえば、宛先コントロールへの参照)。または、この問題を他の方法で解決するにはどうすればよいですか?