利用反射动态创建WPF控件对象,该如何解决
利用反射动态创建WPF控件对象
想动态加载dll创建WPF控件,但这段代码在创建某些继承于FrameworkElement类的对象时,本段代码执行没问题,而实际该控件没办法被创建,比如DataGridDetailsPresenter ,它虽继承于FrameworkElement,但是不能创建该对象
https://msdn.microsoft.com/zh-cn/expression/system.windows.controls.primitives.datagriddetailspresenter
我想知道利用反射动态创建WPF控件对象,除了继承于FrameworkElement之外,还有什么条件吗?
------解决思路----------------------
既然你提供了链接,那你应该也看了
在 DataGrid 的模板中使用,用于指定要将行详细信息添加到控件的可视化树中的什么位置
https://msdn.microsoft.com/zh-cn/library/cc278066
看样子你应该是动态将它创建到datagrid.Style中,而你的代码却会直接将它加到画布上
------解决思路----------------------
动态加载这种东西看着挺好,用起来可就不那么好了,你应该注意到使用上的局限性
不仅是wpf,即使是winform、asp.net也是一样
不知道你要做什么,大量的动态创建控件不管是效率、维护还是扩展性都不好。是否该换一种思路
------解决思路----------------------
DataGridDetailsPresenter类用来做DataGrid的自定义模板, 是没办法用于Canvas, 你可以把位于System.Windows.Controls.Primitives命名空间中的所有Control全部过滤掉.
Assembly ass = Assembly.LoadFrom(ofg.FileName);
foreach (Type type in ass.GetTypes())
{
if (type.IsSubclassOf(typeof(FrameworkElement)))
{
UIElement obj = Activator.CreateInstance(type) as UIElement;
Canvas.SetTop(obj, 0);
Canvas.SetLeft(obj, 0);
schemaView.MainCanvas.Children.Add(obj);
}
}
想动态加载dll创建WPF控件,但这段代码在创建某些继承于FrameworkElement类的对象时,本段代码执行没问题,而实际该控件没办法被创建,比如DataGridDetailsPresenter ,它虽继承于FrameworkElement,但是不能创建该对象
https://msdn.microsoft.com/zh-cn/expression/system.windows.controls.primitives.datagriddetailspresenter
我想知道利用反射动态创建WPF控件对象,除了继承于FrameworkElement之外,还有什么条件吗?
------解决思路----------------------
既然你提供了链接,那你应该也看了
在 DataGrid 的模板中使用,用于指定要将行详细信息添加到控件的可视化树中的什么位置
https://msdn.microsoft.com/zh-cn/library/cc278066
看样子你应该是动态将它创建到datagrid.Style中,而你的代码却会直接将它加到画布上
------解决思路----------------------
动态加载这种东西看着挺好,用起来可就不那么好了,你应该注意到使用上的局限性
不仅是wpf,即使是winform、asp.net也是一样
不知道你要做什么,大量的动态创建控件不管是效率、维护还是扩展性都不好。是否该换一种思路
------解决思路----------------------
DataGridDetailsPresenter类用来做DataGrid的自定义模板, 是没办法用于Canvas, 你可以把位于System.Windows.Controls.Primitives命名空间中的所有Control全部过滤掉.