У меня есть форма в wpf, во время выполнения в событии Load добавьте следующие элементы управления из строки XAML
// load Canvas
sXAML = "<Canvas xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation' xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml'";
sXAML += " Height=\"Auto\" Name=\"canvasMain\" Width=\"Auto\">";
sXAML += " </Canvas>";
XmlDocument xdoc = new XmlDocument();
xdoc.LoadXml(sXAML);
XmlTextReader xmlReader = new XmlTextReader(new StringReader(xdoc.OuterXml));
object obj = XamlReader.Load(xmlReader);
if (obj != null)
{
Canvas cnv = obj as Canvas;
this.AddChild(cnv);
this.RegisterName(cnv.Name, cnv);
}
затем добавьте элемент управления Canvas и dataGrid
// load dataGrid
sXAML = "<DataGrid xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation' xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml'";
sXAML += " AutoGenerateColumns=\"True\" Height=\"207\" HorizontalAlignment=\"Left\" Margin=\"140,6,0,0\" Name=\"dtgListServer\" VerticalAlignment=\"Top\" Width=\"751\" AlternatingRowBackground=\"LightCyan\">";
sXAML += "</DataGrid>";
XmlDocument xdoc = new XmlDocument();
xdoc.LoadXml(sXAML);
XmlTextReader xmlReader = new XmlTextReader(new StringReader(xdoc.OuterXml));
object obj = XamlReader.Load(xmlReader);
if (obj != null)
{
DataGrid dtg = obj as DataGrid;
cnv.Children.Add(dtg);
cnv.RegisterName(dtg.Name, dtg);
}
Теперь я должен добавить события в элемент управления DataGrid, но метод GetMethod всегда возвращает нуль
EventInfo ei = dtg.GetType().GetEvent(eventname);
MethodInfo mi = dtg.GetType().GetMethod(methodname, BindingFlags.Public | BindingFlags.Instance | BindingFlags.NonPublic);
Delegate del = Delegate.CreateDelegate(ei.EventHandlerType, this, mi);
ei.AddEventHandler(dtg, del);
конечно я пробовал с методом "SelectionChanged" и другим флагом, но результат всегда нулевой
любой может мне помочь и указать где моя ошибка
Заранее благодарю