在运行时打开usercontrol-WPF?

时间:2012-01-17 11:19:47

标签: wpf

在我的WPF应用程序中,我有一个表,用于存储每个用户经常使用的窗口名称。在runtiime,我列出了它。

List<string> LstUserWindows= new List<string>();

我需要的是我需要打开每个窗口,具体取决于列表中窗口的名称。 (我使用usercontrols作为窗口)。如下所示:

 foreach (var rec in LstUserWindows)
 {
      UserControl mainUC = this.FindName(rec.MyWindow) as UserControl;
      displayUserControls(mainUC,null); 
 }

1 个答案:

答案 0 :(得分:1)

我不确定您目前在存储UserControl个实例时采用了哪种方法,但这里有两种可能的方法。

  1. 如果您的用户界面中已经存在所有UserControl个实例但只是隐藏了,那么您应该可以使用FindName(...)(正如您在问题中提到的那样)然后更改Visibility。{/ p>

  2. UserControl属性
  3. 如果您尚未加载UserControl个实例并且想要动态创建控件名称,那么您需要查看使用Reflection。使用此方法,您可以从Type获取Assembly信息,并使用Reflection构建对象。或者,您可以使用Activator类来构造所需控件类型的实例。对于这种方法,你会做这样的事情。

    foreach (var rec in LstUserWindows)
    {
        UserControl control = (UserControl)System.Activator.CreateInstance("AssemblyName", rec);
        displayUserControls(control, null);
    }
    
  4. 注意:我不确定参数结构是否正确(我目前无法测试)。查看MSDN Documentation以获取更多帮助。