我在一个 XAML 中几乎没有扩展器。还有另一个包含 StackPanel 的主 UI 应用程序。
本地控制.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。
管理器.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:请忽略所有语法问题。我的目的是给出一些想法,我想用这个做什么。