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