1

1 つの XAML にエキスパンダーがほとんどありません。StackPanel を含む別のメイン UI アプリケーションがあります。

LocalControl.XAML

<UserControl>
     <Expander Name="ExpA">
         <StackPanel>
           <ComboBox />
           <TextBox />
         </StackPanel>
     </Expander>

     <Expander Name="ExpB">
         <StackPanel>
             <ComboBox />
             <TextBox />
             <Button />
         <StackPanel>
     </Expander>
</UserControl>

初期化中に LocalControl.xaml.cs で、この Expanders と他の UI コントロールのバインドに DataContext を設定しました。イベントがトリガーされるたびに、これらのエキスパンダーを StackPanel の下の maincontrol にロードしたいと考えています。

LocalControl.xaml.cs からのロード イベントとアンロード イベントをリッスンする仲介者クラスがあります。これを Manager.cs と呼びましょう。

Manager.cs

public class Manager {

  public Manager(MainControl mc)
  {
     LocalControl lc = new LocalControl();
     lc.loadMe += loadControl;
  }

  private void loadControl(sender, MyEventArgs e)
  {
      foreach(var exp in e.Expanders){
          mc.SP.Add(exp);
      }
  }
}

アプリケーションで UI コントロールを表示する必要があるメイン コントロールがあります。

<UserControl>
    <StackPanel Name="SP">
        <!-- Add expanders here  -->
    </StackPanel>
</UserControl>

このエキスパンダーが MainControl StackPanel にロードされていることを確認するにはどうすればよいですか?

とにかく LocalControl でいくつかのプロパティを公開し、そのプロパティを MainControl でオンデマンドで使用できますか?

簡単に言うと、ある XAML ファイルの下にある小さなコントロールを、実行時に別の XAML ファイルの StackPanel コントロールにロードしたいと考えています。コンパイル時に MainControl XAML にこれらのコントロールを追加したくありません。私のアプリケーションには、実行時に追加する必要があるエキスパンダーが多数あります。

質問が明確であることを願っています。

PS: 構文の問題はすべて無視してください。私の意図は、私がこれで何をしたいのかという考えを与えることです。

4

0 に答える 0