用于导航 wpf 的 Contentcontrol 或 dockpanel
Contentcontrol or dockpanel for navigation wpf
我使用Contentcontrol来显示程序的用户控件,现在关闭用户控件时出现问题搜索后,我找到了一个示例,用户控件加载在DockPanel上
现在我的问题:
这两个控件有什么区别? (Dockpanel 与 ContentControl)
是否可以使用此控件(停靠面板)而不是 Contentcontrol 来显示应用程序用户控件?
Contentcontrol有没有类似的代码?
ucChild ChildWindow = new ucChild();
ChildWindow.ParentControl = this.UIPanel;
UIPanel.Children.Clear();
UIPanel.Children.Add(ChildWindow);
Standard disclaimer for people coding WPF like it is WinForms: First off; direct UI manipulation like this is a bad idea. You should
be modifying a view model and allowing the binding system to update
the UI. Use the MVVM pattern; WPF will work for you instead of
against you
针对您的实际问题:
一切。我是说;它们都继承自 FrameworkElement
但就共性而言仅此而已。
- 一个
DockPanel
顾名思义,一个Panel
。那是;它控制一个或多个子元素的布局和大小。具体来说,DockPanel
擅长以下情况:您希望一个元素用完一整列宽度,然后另一个元素跨越顶部(前一个元素除外)并让最后一个元素填充剩余的 space.
- A
ContentControl
基本上是一个占位符,它的目的是公开一个可设置的(最重要的是,可绑定的)Content
属性,您可以将另一个控件塞入其中。更好;你可以在那里放一个实际的 object 并使用 DataTemplate
来控制显示(这种方法符合 MVVM)。
你真的不能用一个替换另一个,见上文
- 没有。
ContentControl
不是 Panel
,因此没有 Children
属性。
我使用Contentcontrol来显示程序的用户控件,现在关闭用户控件时出现问题搜索后,我找到了一个示例,用户控件加载在DockPanel上
现在我的问题:
这两个控件有什么区别? (Dockpanel 与 ContentControl)
是否可以使用此控件(停靠面板)而不是 Contentcontrol 来显示应用程序用户控件?
Contentcontrol有没有类似的代码?
ucChild ChildWindow = new ucChild(); ChildWindow.ParentControl = this.UIPanel; UIPanel.Children.Clear(); UIPanel.Children.Add(ChildWindow);
Standard disclaimer for people coding WPF like it is WinForms: First off; direct UI manipulation like this is a bad idea. You should be modifying a view model and allowing the binding system to update the UI. Use the MVVM pattern; WPF will work for you instead of against you
针对您的实际问题:
一切。我是说;它们都继承自
FrameworkElement
但就共性而言仅此而已。- 一个
DockPanel
顾名思义,一个Panel
。那是;它控制一个或多个子元素的布局和大小。具体来说,DockPanel
擅长以下情况:您希望一个元素用完一整列宽度,然后另一个元素跨越顶部(前一个元素除外)并让最后一个元素填充剩余的 space. - A
ContentControl
基本上是一个占位符,它的目的是公开一个可设置的(最重要的是,可绑定的)Content
属性,您可以将另一个控件塞入其中。更好;你可以在那里放一个实际的 object 并使用DataTemplate
来控制显示(这种方法符合 MVVM)。
- 一个
你真的不能用一个替换另一个,见上文
- 没有。
ContentControl
不是Panel
,因此没有Children
属性。