C# 用于导航wpf的Contentcontrol或dockpanel

C# 用于导航wpf的Contentcontrol或dockpanel,c#,wpf,user-controls,contentcontrol,dockpanel,C#,Wpf,User Controls,Contentcontrol,Dockpanel,我使用Contentcontrol显示程序的用户控件,现在我在搜索后关闭用户控件时遇到问题,我发现一个示例,用户控件加载在DockPanel上 现在我的问题是: 这两个控件之间的区别是什么?(Dockpanel与ContentControl) 可以使用此控件(dockpanel)而不是Contentcontrol来显示应用程序用户控件吗 Contentcontrol是否有类似的代码 ucChild ChildWindow = new ucChild(); ChildWindow.Parent

我使用Contentcontrol显示程序的用户控件,现在我在搜索后关闭用户控件时遇到问题,我发现一个示例,用户控件加载在DockPanel上
现在我的问题是:

  • 这两个控件之间的区别是什么?(Dockpanel与ContentControl)

  • 可以使用此控件(dockpanel)而不是Contentcontrol来显示应用程序用户控件吗

  • Contentcontrol是否有类似的代码

    ucChild ChildWindow = new ucChild();  
    ChildWindow.ParentControl = this.UIPanel;  
    UIPanel.Children.Clear();  
    UIPanel.Children.Add(ChildWindow);
    
  • 对像WinForms一样编写WPF的人的标准免责声明:首先;像这样的直接UI操作是个坏主意。你应该 正在修改视图模型并允许绑定系统更新 用户界面。使用MVVM模式;WPF将为您工作,而不是 反对你

    对于您的实际问题:

  • 一切。我是说;它们都继承自
    FrameworkElement
    ,但就共性而言仅此而已

    • DockPanel
      顾名思义就是一个
      面板
      。就是,;它控制一个或多个子图元的布局和大小。具体地说,
      DockPanel
      在以下情况下很好:您希望一个元素使用一整列宽度,然后另一个元素跨越顶部(上一个元素除外),并让最后一个元素填充剩余空间
    • ContentControl
      基本上是一个占位符,其目的是公开一个可设置(最重要的是可绑定)的
      Content
      属性,您可以将另一个控件填充到该属性中。甚至更好;您可以将一个实际对象放在那里,并使用
      DataTemplate
      控制显示(这种方法将符合MVVM)
  • 你不能用另一个代替一个,见上文

  • 否。
    ContentControl
    不是
    面板
    ,因此没有
    子项
    属性
    命名DockPanel和ContentControl的共同点比较简单,因为它们非常不同。您是否尝试阅读Microsoft文档?MS为.net提供了优秀的文档。