2

我正在编写 ac#/WPF 应用程序。我的窗口上会有一个列表容器,里面装满了用户可以从中选择的用户控件。我想做的是有一个文件夹来放置我的用户控件。我的主应用程序会在启动时查看所有用户控件的此文件夹位置,然后将它们添加到列表容器中。这将允许我创建新的用户控件并将它们放在应用程序知道要查找的位置。有人对处理此问题的最佳方法有任何指导/指导吗?

我猜我的文件夹会是这样的:usercontrols/usercontrols/controlOne usercontrols/controlTwo usercontorls/newControl

ETC...

谢谢你的帮助

4

1 回答 1

1

在运行时使用XamlReader加载 Xaml 标记的片段。

这是一个例子:

void AddDynamicContent(string path, Panel panelToAddContent)
{

  DirectoryInfo di = new DirectoryInfo(path);
  if (di.Exists)
  {
    FileInfo[] fileInfos = di.GetFiles("*.xaml");
    foreach (FileInfo fi in fileInfos)
    {

      XmlReader xmlReader = XmlReader.Create(fi.FullName);
      FrameworkElement dynamicContent = (FrameworkElement)XamlReader.Load(xmlReader);
      panelToAddContent.Children.Add(dynamicContent);
    }
  }
}

...

AddDynamicContent(@"c:\temp\controls", myStackPanel);

确保在标记定义中省略类声明部分 (x:Class="") 否则会出现异常。请注意,CodeBehind 不会执行,它只是创建一个简单的 UIElement。

于 2012-05-29T14:59:41.277 回答