在运行时打开usercontrol WPF?

在运行时打开usercontrol WPF?,wpf,Wpf,在我的WPF应用程序中,我有一个存储每个用户常用窗口名的表。在runtiime,我把它列了一个清单 List<string> LstUserWindows= new List<string>(); 我不确定您目前在存储UserControl实例时采用了哪种方法,但这里有两种可能的方法 如果所有UserControl实例已经存在于您的UI中,但只是隐藏了,那么您应该能够使用FindName(…)(正如您在问题中提到的),然后更改UserControl的可见性属性 如果尚未

在我的WPF应用程序中,我有一个存储每个用户常用窗口名的表。在runtiime,我把它列了一个清单

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);
    }
    
  • 注意:我不确定参数结构是否正确(我目前无法测试它)。请查看以获取更多有关它的帮助