Grid 与 Dock

我们可以用下面的方法创建一个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:    }
posted @ 2012-11-02 16:14  xx++  阅读(224)  评论(0编辑  收藏  举报