silverlight4.0的grid边框

来源:互联网 发布:淘宝 大类目小类目 编辑:程序博客网 时间:2024/05/01 00:31

说明:学习参考了

http://www.cnblogs.com/chenxizhang/archive/2011/09/22/2185414.html,详细代码可以参考该网址

 

更改为边框为1px:

        private static void OnShowBorderChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            var grid = d as Grid;
            if((bool)e.OldValue)
            {
                grid.Loaded -= (s, arg) => { };
            }
            if((bool)e.NewValue)
            {
                grid.Loaded += (s, arg) =>
                {

                    //这种做法自动将控件移动到Border里面来
                    var controls = grid.Children;
                    var count = controls.Count;

                    for(int i = 0; i < count; i++)
                    {
                        var item = controls[i] as FrameworkElement;
                        var border_left = new Border()
                        {
                            BorderBrush = new SolidColorBrush(Colors.Blue),
                            BorderThickness = new Thickness(0,0,1,1),
                            Padding = new Thickness(1),
                        };
                        //第一行
                        var topRowBorder = new Border()
                        {
                            BorderBrush = new SolidColorBrush(Colors.Blue),
                            BorderThickness = new Thickness(0, 1, 1, 1),
                            Padding = new Thickness(1),
                        };
                        //第一列
                        var topColm = new Border()
                        {
                            BorderBrush = new SolidColorBrush(Colors.Blue),
                            BorderThickness = new Thickness(1, 0, 1, 1),
                            Padding = new Thickness(1),
                        };
                        var all =new Border()
                        {
                            BorderBrush = new SolidColorBrush(Colors.Blue),
                            BorderThickness = new Thickness(1, 1, 1, 1),
                            Padding = new Thickness(1),
                        };
                        var row = Grid.GetRow(item);
                        var column = Grid.GetColumn(item);
                        var rowspan = Grid.GetRowSpan(item);
                        var columnspan = Grid.GetColumnSpan(item);

                        //第一个文本框
                        if (row == 0 && column == 0)
                        {
                            Grid.SetRow(all, row);
                            Grid.SetColumn(all, column);
                            Grid.SetRowSpan(all, rowspan);
                            Grid.SetColumnSpan(all, columnspan);

                            grid.Children.RemoveAt(i);
                            all.Child = item;
                            grid.Children.Insert(i, all);
                        }
                        else if (row == 0 && column != 0)
                        {
                            Grid.SetRow(topRowBorder, row);
                            Grid.SetColumn(topRowBorder, column);
                            Grid.SetRowSpan(topRowBorder, rowspan);
                            Grid.SetColumnSpan(topRowBorder, columnspan);

                            grid.Children.RemoveAt(i);
                            topRowBorder.Child = item;
                            grid.Children.Insert(i, topRowBorder);
                        }
                        else if (row != 0 && column == 0)
                        {
                            Grid.SetRow(topColm, row);
                            Grid.SetColumn(topColm, column);
                            Grid.SetRowSpan(topColm, rowspan);
                            Grid.SetColumnSpan(topColm, columnspan);

                            grid.Children.RemoveAt(i);
                            topColm.Child = item;
                            grid.Children.Insert(i, topColm);
                        }
                        else
                        {
                            Grid.SetRow(border_left, row);
                            Grid.SetColumn(border_left, column);
                            Grid.SetRowSpan(border_left, rowspan);
                            Grid.SetColumnSpan(border_left, columnspan);

                            grid.Children.RemoveAt(i);
                            border_left.Child = item;
                            grid.Children.Insert(i, border_left);
                        }
                    }
                };
            }

        }