• WPF中使用DataGrid时操作列按钮问题


    在使用DataGrid的过程中,我们有时候需要对选取的某一行数据进行多个操作,这个时候操作列只有一个按钮显然无法满足我们的要求,我们需要多个按钮才能达到我们的目的。

    UI页面代码:

        <Grid>
            <DataGrid x:Name="datagrid" AutoGenerateColumns="False" ScrollViewer.HorizontalScrollBarVisibility="Hidden" SizeChanged="datagrid_SizeChanged" RowHeaderWidth="0" IsReadOnly="True" BorderBrush="Transparent" BorderThickness="1">
                <DataGrid.ColumnHeaderStyle>
                    <Style TargetType="DataGridColumnHeader">
                        <Setter Property="HorizontalContentAlignment" Value="Center"></Setter>
                        <Setter Property="FontSize" Value="20"></Setter>
                        <Setter Property="FontWeight" Value="ExtraBold"></Setter>
                        <Setter Property="Height" Value="50"></Setter>
                    </Style>
                </DataGrid.ColumnHeaderStyle>
    
                <DataGrid.Columns>
                    <DataGridTextColumn x:Name="UserName" Binding="{Binding Name}" Header="姓名" FontSize="20"/>
                    <DataGridTextColumn x:Name="UserSex" Binding="{Binding Sex}" Header="性别" FontSize="20"/>
                    <DataGridTextColumn x:Name="UserAge" Binding="{Binding Age}" Header="是否完成" FontSize="20"/>
                    <DataGridTextColumn x:Name="UserPhone" Binding="{Binding Phone}" Header="下发时间" FontSize="20"/>
                    <DataGridTemplateColumn x:Name="UserAction" Header="操作" Width="100">
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <StackPanel Orientation="Horizontal">
                                    <Button x:Name="BtnAction" Content="{Binding BtnActionStr}" Height="34"
                                            Width="80" Click="BtnAction_Click" IsEnabled="{Binding Enabled}"
                                            FontSize="20"  HorizontalContentAlignment="Center" VerticalContentAlignment="Center">
                                    </Button>
                                    <Button x:Name="BtnAction1" Content="{Binding BtnActionStr1}" Height="34"
                                            Width="80" Click="BtnAction1_Click" IsEnabled="{Binding Enabled1}"
                                            FontSize="20"  HorizontalContentAlignment="Center" VerticalContentAlignment="Center">
                                    </Button>
                                </StackPanel>
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>
                </DataGrid.Columns>
            </DataGrid>
        </Grid>
    

     后台代码:

            List<User> users = new List<User>();
            //向DataGrid中添加数据
            private void GetDataGrid()
            {
                for (int i = 0; i < 10; i++)
                {
                    User user = new User();
                    user.Name = "Tom"; user.Sex = "男"; user.Age = "18"; user.Phone = "000000";
                    user.BtnActionStr = "按钮" + i;
                    user.BtnActionStr1 = "按钮" + (i + 1);
                    if (i % 2 == 0)
                    {
                        user.Enabled = true;
                        user.Enabled1 = false;
                    }
                    else
                    {
                        user.Enabled = false;
                        user.Enabled1 = true;
                    }
                    users.Add(user);
                }
                //数据绑定
                datagrid.ItemsSource = users;
            }
            //定义要绑定的类
            private class User
            {
                public string Name { get; set; }
                public string Sex { get; set; }
                public string Age { get; set; }
                public string Phone { get; set; }
                public string BtnActionStr { get; set; }
                public bool Enabled { get; set; }
                public string BtnActionStr1 { get; set; }
                public bool Enabled1 { get; set; }
            }
            //平均分配各列的宽度
            private void datagrid_SizeChanged(object sender, SizeChangedEventArgs e)
            {
                int WidthSize = (int)(datagrid.ActualWidth / 5 - 4);
                UserName.Width = WidthSize; UserSex.Width = WidthSize; UserAge.Width = WidthSize;
                UserPhone.Width = WidthSize; UserAction.Width = WidthSize;
            }
            //第一个按钮点击事件
            private void BtnAction_Click(object sender, RoutedEventArgs e)
            {
                MessageBox.Show(users[datagrid.SelectedIndex].Name);
            }
            //第二个按钮点击事件
            private void BtnAction1_Click(object sender, RoutedEventArgs e)
            {
                MessageBox.Show(users[datagrid.SelectedIndex].Sex);
            }
    

     调用:

    GetDataGrid();
    

     效果图:

    勿忘初心,方得始终。
  • 相关阅读:
    运维实战:两台服务器http方式共享yum软件仓库
    初始化thinkphp6.0出现的问题解决
    记一次续签SSL证书导致微信小程序部分机型无法访问网站接口
    微信小程序-订阅消息验证发送值有效格式
    微信小程序分包优化
    MySQL timeout 参数详解
    mysql 事件
    springboot 远程拉取配置中心配置
    使用springboot的resttmplate请求远程服务的时候报 403问题
    for 循环 与增强的for循环 经验小结
  • 原文地址:https://www.cnblogs.com/FastAsia/p/9400967.html
Copyright © 2020-2023  润新知