在WPF窗口上显示任意控件

本文关键字:任意 控件 显示 WPF 窗口 | 更新日期: 2023-09-27 17:58:33

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

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

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

public class WizardModel : INotifyPropertyChanged
{
  private UserControl _currentPage;
  public UserControl CurrentPage 
  { 
    get { return _currentPage; }
    set 
    { 
      _currentPage = value;
      if (PropertyChanged != null) PropertyChanged(this, "CurrentPage");
    }
  }
}

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

我确实尝试过使用ContentCrontol,但我很快就认为这不是为了这个目的,我真的不知道该怎么办。

在WPF窗口上显示任意控件

我在这里做了一些猜测,因为最初的问题中没有太多细节,但我想我已经知道你要完成什么了。

看起来你想要一个基类,上面已经有了所有的公共控件。假设我们将此类称为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);
   }
}