除了获取实例之外,我的问题是如何将此实例作为wpf UserControl。
我有一个UserControl(Holder),它可以显示另一个UserControls(childs),这些控件都在同一个程序集中,但用户可以选择哪些必须放入holder。
我正在创建实例:
CapturasAdicionalesControl ctr = d as CapturasAdicionalesControl;
List<ICapturaAdicional> capturas = ctr.Capturas;
string assemblyName = "MyAssemblyPath";
Assembly assembly = Assembly.Load(assemblyName);
foreach (ICapturaAdicional captura in capturas)
{
Type capturaObj = assembly.GetType($"{assemblyName}.{captura.Control}");
InsertCaptura(capturaObj);
}
我得到了我的类型,但是当尝试添加到Holder时,它会从类型到UserControl生成无效的强制转换。
我试图使用(UserControl)MyType ... MyType作为UserControl但没有结果。
现在我的问题是:
如果一个人不可能
如何直接从程序集中将我的用户控件作为Usercontrol,或者如果只有它的名字,如何创建它的实例?
另一种方法会非常感激吗?
编辑1
private static Grid InsertCaptura(UserControl instance)
{
Grid NewGrid = new Grid()
{
Style = (Style)Application.Current.FindResource("TabOptionBackGroundStyle")
};
NewGrid.RowDefinitions.Add(new RowDefinition() { });
NewGrid.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto });
NewGrid.RowDefinitions.Add(new RowDefinition() { });
NewGrid.ColumnDefinitions.Add(new ColumnDefinition() { });
NewGrid.ColumnDefinitions.Add(new ColumnDefinition() { Width = GridLength.Auto });
NewGrid.ColumnDefinitions.Add(new ColumnDefinition() { });
Grid.SetColumn((UIElement)instance, 1);
Grid.SetRow((UIElement)instance, 1);
NewGrid.Children.Add((UIElement)instance);
return NewGrid;
}