在运行时打开usercontrol WPF?
在我的WPF应用程序中,我有一个存储每个用户常用窗口名的表。在runtiime,我把它列了一个清单在运行时打开usercontrol WPF?,wpf,Wpf,在我的WPF应用程序中,我有一个存储每个用户常用窗口名的表。在runtiime,我把它列了一个清单 List<string> LstUserWindows= new List<string>(); 我不确定您目前在存储UserControl实例时采用了哪种方法,但这里有两种可能的方法 如果所有UserControl实例已经存在于您的UI中,但只是隐藏了,那么您应该能够使用FindName(…)(正如您在问题中提到的),然后更改UserControl的可见性属性 如果尚未
List<string> LstUserWindows= new List<string>();
我不确定您目前在存储
UserControl
实例时采用了哪种方法,但这里有两种可能的方法
UserControl
实例已经存在于您的UI中,但只是隐藏了,那么您应该能够使用FindName(…)
(正如您在问题中提到的),然后更改UserControl
的可见性
属性UserControl
实例,并且希望根据控件的名称动态创建该控件,则需要研究如何使用。使用这种方法,您可以从程序集
获取类型
信息,并使用反射构造对象。或者,您可以使用该类构造所需控件类型的实例。对于这种方法,您可以这样做
foreach (var rec in LstUserWindows)
{
UserControl control = (UserControl)System.Activator.CreateInstance("AssemblyName", rec);
displayUserControls(control, null);
}
注意:我不确定参数结构是否正确(我目前无法测试它)。查看以获取更多帮助。我不确定您当前在存储
UserControl
实例时采用了哪种方法,但以下是两种可能的方法
UserControl
实例已经存在于您的UI中,但只是隐藏了,那么您应该能够使用FindName(…)
(正如您在问题中提到的),然后更改UserControl
的可见性
属性UserControl
实例,并且希望根据控件的名称动态创建该控件,则需要研究如何使用。使用这种方法,您可以从程序集
获取类型
信息,并使用反射构造对象。或者,您可以使用该类构造所需控件类型的实例。对于这种方法,您可以这样做
foreach (var rec in LstUserWindows)
{
UserControl control = (UserControl)System.Activator.CreateInstance("AssemblyName", rec);
displayUserControls(control, null);
}