C# 在WPF窗口上显示任意控件

C# 在WPF窗口上显示任意控件,c#,wpf,xaml,C#,Wpf,Xaml,我正在开发一个WPF向导WiX自定义托管引导程序应用程序 向导中的某些元素很常见(例如,顶部的产品信息和徽标),我不想重新定义这些元素。我也不想每次安装都要从头开始重新开发整个过程(是的,有很多安装我想使用它,它们有不同的向导) 我有一个这样的模型(简化以避免混淆) 我想绑定一个控件,以便在属性更改时显示CurrentPage中的控件 我确实尝试过使用ContentCrontol,但我很快就否定了这一点,因为它不是为了达到这个目的,我真的不知道从这里可以走到哪里。我在这里做了一些猜测,因为原始问

我正在开发一个WPF向导WiX自定义托管引导程序应用程序

向导中的某些元素很常见(例如,顶部的产品信息和徽标),我不想重新定义这些元素。我也不想每次安装都要从头开始重新开发整个过程(是的,有很多安装我想使用它,它们有不同的向导)

我有一个这样的模型(简化以避免混淆)

我想绑定一个控件,以便在属性更改时显示CurrentPage中的控件


我确实尝试过使用ContentCrontol,但我很快就否定了这一点,因为它不是为了达到这个目的,我真的不知道从这里可以走到哪里。

我在这里做了一些猜测,因为原始问题中没有太多的细节,但我想我已经了解了您想要实现的目标

似乎您希望已经有一个包含所有常用控件的基类。假设我们称这个类为WizardUserControl。无论如何,假设我们在WizardUserControl(我们称之为CustomGridArea)中定义了一个网格,该网格将是我们可以根据正在处理的向导页面删除所有自定义控件的主要区域。因此,WizardUserControl可能会实现如下方法:

public class WizardUserControl : UserControl
{
   ...
   // All your standard wizard code stuff/behavior/business logic/etc...
   ...
   ...

   public void InsertCustomizedControl(UserControl customizedControl)
   {
      CustomGridArea.Children.Clear();
      CustomGridArea.Children.Add(customizedControl);
   }
}

某种程度上。在任何情况下,
.Children.Clear
后跟
.Add
似乎都成功了
public class WizardUserControl : UserControl
{
   ...
   // All your standard wizard code stuff/behavior/business logic/etc...
   ...
   ...

   public void InsertCustomizedControl(UserControl customizedControl)
   {
      CustomGridArea.Children.Clear();
      CustomGridArea.Children.Add(customizedControl);
   }
}