C#UserControl - 在运行时添加它们

时间:2012-05-29 14:39:00

标签: c# wpf user-controls runtime

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

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

等等......

感谢您的帮助

1 个答案:

答案 0 :(得分: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。