У меня есть интерфейс на основе ленты, в котором есть один выпадающий список и один выпадающий список. Я создал следующие методы для загрузки этих элементов управления с содержимым:
Для комбинированного списка:
internal void LoadComboBox(RibbonComboBox YourCbx, List<string> YourList)
{
if (YourCbx.Items.Count > 0)
YourCbx.Items.Clear();
foreach (var curEntry in YourList.ToArray())
{
RibbonDropDownItem newItem = Factory.CreateRibbonDropDownItem();
newItem.Label = curEntry ;
YourCbx.Items.Add(newItem);
}
}
Для выпадающего списка:
internal void LoadDDBox(RibbonDropDown YourDD, List<string> YourList)
{
if (YourDD.Items.Count > 0)
YourDD.Items.Clear();
foreach (var curEntry in YourList.ToArray())
{
RibbonDropDownItem newItem = Factory.CreateRibbonDropDownItem();
newItem.Label = curEntry ;
YourDD.Items.Add(newItem);
}
}
Как вы можете видеть оба метода в значительной степени идентичны, за исключением того, что в метод необходимо передать другой объект управления windows. Поэтому я подумал о создании одного метода для обоих элементов управления и дошел до следующего:
internal void LoadDropDown<T>(IList<T> YourDD, List<string> YourList, Action<RibbonDropDownItem> addMeth)
{
if (YourDD.Count > 0)
YourDD.Clear();
foreach (var curCS in YourList.ToArray())
{
RibbonDropDownItem newItem = Factory.CreateRibbonDropDownItem();
newItem.Label = curCS;
addMeth(newItem);
}
}
Вызов этого метода может выглядеть следующим образом:
LoadDropDown<RibbonDropDown>((IList<RibbonDropDown>)MyDropDownControl, MyList,
(x) => { MyDropDownControl.Items.Add(x); });
К сожалению, Я получаю исключение во время выполнения о том, что RibbonDropDown не может быть преобразован в IList. Я сейчас застрял здесь. У кого-нибудь есть предложения как сделать один метод как выше?