我们可以用下面的方法创建一个DockPanel
1: DockPanel dock = new DockPanel();
然后将它付给content对象
1: Content = dock
将ctrl控件当作dock的children属性赋值
1: dock.Children.Add(ctrl)
最终设置ctrl控件的设置为dock的某一边
1: Dock.SetDock(ctrl,Dock.Right);
当然你也可以用另一种方法设置dock属性(attached property)
1: ctrl.SetValue(DockPanel.DockProperty,Dock.Right);
看一个例子:
1: using System;
2: using System.Collections.Generic;
3: using System.Linq;
4: using System.Text;
5: using System.Windows;
6: using System.Windows.Controls;
7: using System.Windows.Data;
8: using System.Windows.Documents;
9: using System.Windows.Input;
10: using System.Windows.Media;
11: using System.Windows.Media.Imaging;
12: using System.Windows.Navigation;
13: using System.Windows.Shapes;
14:
15: namespace WPF_DockAndGrid
16: {
17: /// <summary>
18: /// MainWindow.xaml 的交互逻辑
19: /// </summary>
20: public partial class MainWindow : Window
21: {
22: public MainWindow()
23: {
24: InitializeComponent();
25: Loaded += WindowOnLoaded;
26: }
27:
28: private void WindowOnLoaded(object sender, RoutedEventArgs e)
29: {
30: DockPanel dock = new DockPanel();
31: Content = dock;
32:
33: for (int i = 0; i < 10; i++)
34: {
35: Button btn = new Button();
36: btn.Content = "Button" + i;
37: btn.SetValue(DockPanel.DockProperty, (Dock)(i % 4));
38: dock.Children.Add(btn);
39: }
40: dock.LastChildFill = false;
41: }
42: }
43: }
我们来看个完整的DockPanel布局示例:
1: private void DockPanelLayoutTest()
2: {
3: DockPanel dock = new DockPanel();
4: Content = dock;
5:
6: Menu menu = new Menu();
7: MenuItem item = new MenuItem();
8: item.Header = "Menu";
9: menu.Items.Add(item);
10: dock.Children.Add(menu);
11: DockPanel.SetDock(menu, Dock.Top);
12:
13: ToolBar tbar = new ToolBar();
14: tbar.Header = "ToolBar";
15: tbar.SetValue(DockPanel.DockProperty, Dock.Top);
16: dock.Children.Add(tbar);
17:
18: StatusBar sbar = new StatusBar();
19: StatusBarItem sbi = new StatusBarItem();
20: sbi.Content = "StatusBar";
21: sbar.Items.Add(sbi);
22: dock.Children.Add(sbar);
23: DockPanel.SetDock(sbar, Dock.Bottom);
24:
25: ListBox lb = new ListBox();
26: lb.Items.Add("list box status");
27: DockPanel.SetDock(lb, Dock.Left);
28: dock.Children.Add(lb);
29:
30: TextBox tbk = new TextBox();
31: tbk.AcceptsReturn = true;
32: dock.Children.Add(tbk);
33: tbk.Focus();
34: }