WPF Grid容器添加删除列

复制代码
  <Grid >
        <Grid.RowDefinitions>
            <RowDefinition/>
            <RowDefinition/>
        </Grid.RowDefinitions>

        <Grid Grid.Row="0"  Name="grid">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Name="stationGridBcolumn0"/>
                <ColumnDefinition Name="stationGridBcolumn1" />
                <ColumnDefinition Name="stationGridBcolumn2" />
                <ColumnDefinition Name="stationGridBcolumn3" />
                <ColumnDefinition Name="stationGridBcolumn4" />
                <ColumnDefinition Name="stationGridBcolumn5" />
            </Grid.ColumnDefinitions>
            <Grid Grid.Column="0" Name="g0">
            <Button Name="b0" Content="0"/>
         </Grid>
        <Grid Grid.Column="1" Name="g1">
            <Button Name="b1" Content="1"/>
        </Grid>
        <Grid Grid.Column="2" Name="g2">
            <Button Name="b2" Content="2"/>
        </Grid>
        <Grid Grid.Column="3" Name="g3">
            <Button Name="b3" Content="3"/>
        </Grid>
        <Grid Grid.Column="4" Name="g4">
            <Button Name="b4" Content="4"/>
        </Grid>
        <Grid Grid.Column="5" Name="g5">
            <Button Name="b5" Content="5"/>
        </Grid>
        </Grid>
        <Grid Grid.Row="1" >
            <StackPanel>
            <Button Content="Remove" Click="Button_Click_1"></Button>
            <Button Content="Add" Click="Button_Click_2"></Button>
             <Button Content="Insert" Click="Button_Click_3"></Button>
            </StackPanel>
        </Grid>
    </Grid>
复制代码
 /// <summary>
        /// 这只是个例子,上一步操作一定是删除操作,Add操作会把删除的列加进来
        /// </summary>
        /// <param name="info"></param>
        public void Add(Info info)
        {
            ColumnDefinition columnDefinition = info.ColumnDefinition;
            UIElement uiElement = info.UIElement;
            Grid.SetColumn(uiElement, grid.Children.Count);
            grid.ColumnDefinitions.Add(columnDefinition);
            grid.Children.Add( uiElement);
        }

        /// <summary>
        /// 这只是个例子,上一步操作一定是删除操作,Insert操作会把删除的列加进来
        /// </summary>
        /// <param name="info"></param>
        /// <param name="colIndex"></param>
        public void Insert(Info info, int colIndex)
        {
            ColumnDefinition columnDefinition = info.ColumnDefinition;
            UIElement uiElement = info.UIElement;
            Grid.SetColumn(uiElement, colIndex);
            grid.ColumnDefinitions.Insert(colIndex, columnDefinition);
            grid.Children.Insert(colIndex, uiElement);
            int index = 0;
            foreach (UIElement child in grid.Children)
            {
                Grid.SetColumn(child, index);
                index++;
            }
        }

        private Info Remove(int colIndex)
        {
            Info info = new Info(grid.ColumnDefinitions[colIndex], grid.Children[colIndex]); 
            grid.ColumnDefinitions.RemoveAt(colIndex);
            grid.Children.RemoveAt(colIndex);
            foreach (UIElement child in grid.Children)
            {
                int curCol = Grid.GetColumn(child);
                if (curCol > colIndex)
                {
                    Grid.SetColumn(child, curCol - 1);
                }
            }
            return info;
        }
        Info info;
        private void Button_Click_1(object sender, RoutedEventArgs e)
        {
            info = Remove(4);
        }

        private void Button_Click_2(object sender, RoutedEventArgs e)
        {
            Add(info);
        }

        private void Button_Click_3(object sender, RoutedEventArgs e)
        {
            Insert(info,4);
        }
相关推荐
one9964 小时前
WPF应用程序中的异常处理
c#·.net·wpf
somethingGoWay1 天前
wpf .netcore 导出docx文件
wpf·.netcore
somethingGoWay1 天前
wpf .netcore 导出pdf文件
pdf·wpf·.netcore
self_myth2 天前
[特殊字符] 深入理解操作系统核心特性:从并发到分布式,从单核到多核的全面解析
windows·macos·wpf·harmonyos
c#上位机2 天前
wpf之TextBlock
c#·wpf
玉面小君4 天前
从 WPF 到 Avalonia 的迁移系列实战篇6:ControlTheme 和 Style区别
c#·wpf·avalonia
c#上位机4 天前
wpf之Border
c#·wpf
SunflowerCoder4 天前
WPF迁移avalonia之图像处理(一)
图像处理·wpf·avalonia
周杰伦fans4 天前
WPF中的DataContext以及常见的绑定方式
wpf
没有bug.的程序员5 天前
Redis 数据结构全面解析:从底层编码到实战应用
java·数据结构·redis·wpf