2

私は ac#/WPF アプリを書いています。ユーザーが選択できるユーザー コントロールでいっぱいのリスト コンテナーをウィンドウに配置します。私がやりたいことは、ユーザー コントロールを配置するフォルダーを用意することです。私のメイン アプリは、すべてのユーザー コントロールの起動時にこのフォルダーの場所を確認し、それらをリスト コンテナーに追加します。これにより、新しいユーザー コントロールを作成し、アプリが認識している場所にドロップすることができます。これを処理するための最良の方法に関するガイダンス/指示はありますか?

私のフォルダは次のようなものになると思います: usercontrols/ usercontrols/controlOne usercontrols/controlTwo usercontorls/newControl

等...

助けてくれてありがとう

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 に答える