zoukankan      html  css  js  c++  java
  • 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();
    

     效果图:

    勿忘初心,方得始终。
  • 相关阅读:
    uva 10280(欧拉函数)
    uva 11121(-2进制)
    uva 10673(扩展欧几里德)
    uva 106(勾股定理)
    uva 128(简单题)
    Codeforces Round #238 (Div. 1) 解题报告
    2018(1)系统分析/需求分析
    2015(1)进度管理/时间管理
    序列图
    [转贴] 软件测试职业发展的 A 面和 B 面
  • 原文地址:https://www.cnblogs.com/FastAsia/p/9400967.html
Copyright © 2011-2022 走看看