В отдельном классе я предоставил несколько методов для динамического создания элемента. Динамическое создание этого элемента - не проблема, а маршрутизация события.
Мои мысли, где этот "путь" (например, namespace.class.method) передается через параметр в методе создания.
Но до сих пор я не мог прикрепить такой прослушиватель событий. Я провел много исследований с использованием Google и StackOverflow, но безуспешно.
Выкладываю исходный код метода ниже.
Код в разделе if для EventHandler не пустой был моей последней попыткой.
Возможно ли, что мои мысли будут работать, или это возможно только для добавления обработчиков событий в основной класс, который инициализирует приложение.
static public WrapPanel comboBox(string Name, List<string> Items, bool MultiSelection = false, string EventHandler="",string Label="", int Width = 0)
{
WrapPanel lPanel = new WrapPanel();
lPanel.Name = "stPanel_" + Name;
if (Label != "")
{
Label lLabel = new Label();
lLabel.Content = Label;
lPanel.Children.Add(lLabel);
if (Width != 0)
{
lPanel.Width = Width;
}
}
dynamic lComboBox;
if (MultiSelection)
{
lComboBox = new ComboBoxAdv();
lComboBox.AllowMultiSelect = true;
}
else lComboBox = new ComboBox();
lComboBox.Name = Name;
foreach (string Item in Items) lComboBox.Items.Add(Item);
lPanel.Children.Add(lComboBox);
ComboBox dkaf = new ComboBox();
if (EventHandler != "")
{
string lClass = "";
string lMethod = EventHandler.Split('.').Last();
for (int lCounter = 0; lCounter < EventHandler.Split('.').Length - 1; lCounter++)
lClass += EventHandler.Split('.')[lCounter] + ".";
lClass = lClass.Substring(0, lClass.Length - 1);
object dynamicObject;
Type objectType = Type.GetType(lClass);
dynamicObject = Activator.CreateInstance(objectType);
System.Reflection.MethodInfo method = objectType.GetMethod(lMethod);
//method.Invoke(dynamicObject, new object[] { });
lComboBox.Click += new RoutedEventHandler(method);
}
return lPanel;
}
С наилучшими пожеланиями
Chris