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);
        }
相关推荐
没有bug.的程序员2 小时前
服务治理与 API 网关:微服务流量管理的艺术
java·分布式·微服务·架构·wpf
Brianna Home7 小时前
【案例实战】鸿蒙分布式调度:跨设备协同实战
华为·wpf·harmonyos
c#上位机1 天前
wpf中Grid的MouseDown 事件无法触发的原因
c#·wpf
△曉風殘月〆1 天前
如何在WPF中实现ComboBox多选
wpf
csdn_aspnet1 天前
如何使用现有工具进行 .NET 8 迁移 Wpf
wpf·.net 8
123梦野2 天前
WPF——动画
wpf
攻城狮CSU2 天前
WPF 疑点汇总2.HorizontalAlignment和 HorizontalContentAlignment
wpf
c#上位机2 天前
wpf之命令
c#·wpf
没有bug.的程序员2 天前
分布式链路追踪:微服务可观测性的核心支柱
java·分布式·微服务·架构·wpf
Aevget3 天前
DevExpress WPF中文教程:Data Grid - 如何使用虚拟源?(一)
c#·wpf·界面控件·devexpress·ui开发