我有 Silverlight 应用程序,它有一些组合框,我想用 SharePoint 列表中的字段名称填充它们。每个 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);
}
所以问题是:如何将一些参数传递给这些事件处理程序(例如对目标控件的引用)。或者如何以其他方式解决这个问题?