原文:WPF中使用DataGrid时操作列按钮问题

    <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>
 
 
后台代码
 
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 { getset; }
    public string Sex { getset; }
    public string Age { getset; }
    public string Phone { getset; }
    public string BtnActionStr { getset; }
    public bool Enabled { getset; }
    public string BtnActionStr1 { getset; }
    public bool Enabled1 { getset; }
}
//平均分配各列的宽度
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);
}
 

调用:

1
GetDataGrid();

效果图:

勿忘初心,方得始终。

WPF datagrid 列按钮使用的更多相关文章

  1. 编写 WPF DataGrid 列模板,实现更好的用户体验

    Julie Lerman 下载代码示例 最近我在为一个客户做一些 Windows Presentation Foundation (WPF) 方面的工作. 虽然我提倡使用第三方工具,但有时也会避免使用 ...

  2. WPF DataGrid 列宽填充表格方法

    WPF中使DataGrid 列宽填充表格方法,设置ColumnWidth属性为ColumnWidth="*"即可. 源码: <DataGrid AutoGenerateCol ...

  3. WPF DataGrid列设置为TextBox控件的相关绑定

    在wpf的DataGrid控件中,某一列的数据模板为TextBox控件的话,绑定Text="{Binding TxtSn, UpdateSourceTrigger=PropertyChang ...

  4. wpf datagrid 中按钮 动态显示

    /若datagrid出现滚动条可能会出现问题需要加上下面俩句话.//因为出滚动条时,为了显示加速,datagrid会加载一部分数据.另一些数据当滚动时在加载进去 这样初始化获取不到这些数据.//在da ...

  5. WPF DataGrid 列显示0,-1(作废、删除)状态,1,2(支出、收入)类型,操作人(在其他表中),如何转换格式。

    操作人,左联,Join on letf //容我补充 状态,类型,类似的转换,在xmlns中引入common   xmlns:com="clr-namespace:XXX.Common&qu ...

  6. WPF DataGrid控件中某一列根据另一个文本列的值显示相应的模板控件

    之前做项目的时候需要实现这样一个功能.WPF DataGrid有两列,一列为"更新状态”列,一列为"值"列,如果"更新状态"列的值为“固定值更新”,则 ...

  7. WPF DataGrid某列使用多绑定后该列排序失效,列上加入 SortMemberPath 设置即可.

    WPF DataGrid某列使用多绑定后该列排序失效 2011-07-14 10:59hdongq | 浏览 1031 次  悬赏:20 在wpf的datagrid中某一列使用了多绑定,但是该列排序失 ...

  8. WPF DataGrid绑定一个组合列

    WPF DataGrid绑定一个组合列 前台: <Page.Resources>        <local:InfoConverter x:Key="converter& ...

  9. WPF DataGrid添加编号列

    WPF DataGrid添加编号列? 第一步:<DataGridTemplateColumn Header="编号" Width="50" MinWidt ...

随机推荐

  1. 记一个AbstractMethodError

    如下,引入FastJsonHttpMessageConverter 之后,导致了新的错误: @Override public void configureMessageConverters( List ...

  2. 系统 (一) Windows10安装Ubuntu子系统

    前言 本文将基于 Windows10专业版 安装 Ubuntu子系统 1.控制面板 -> 程序 -> 选择启用或关闭Windows功能 -> 勾上 适用Linux的Windwos子系 ...

  3. C# -- 优先获取电脑C盘之外的磁盘来保存数据

    C# -- 优先获取电脑C盘之外的磁盘来保存数据 1. 优先获取电脑C盘之外的磁盘来保存数据.没有其他盘则使用C盘. public string GetSaveDataDiskPath() { str ...

  4. java 超详细面经整理(持续更新)2019.12.19

    目录 Java SE 请你解释HashMap中为什么重写equals还要重写hashcode? 请你介绍一下map的分类和常见的情况 请你讲讲Java里面的final关键字是怎么用的? 请你谈谈关于S ...

  5. How to: Generate XPO Business Classes for Existing Data Tables 如何:为现有数据表生成 XPO 业务类

    From the Tutorial and other documentation sources, you learned how to create business classes for yo ...

  6. 关于for循环中使用setTimeout的四种解决方案

    我们先来简单了解一下setTimeout延时器的运行机制.setTimeout会先将回调函数放到等待队列中,等待区域内其他主程序执行完毕后,按时间顺序先进先出执行回调函数.本质上是作用域的问题. 因此 ...

  7. source insight 3 常用设置

    总结了一些source insight的一些常用设置,这些设置需求因人而异,自己用的顺手的才是最好的. 1.括号配对高亮“在前括号左侧,后括号左侧”双击鼠标左键,可以选定匹配括号和其中内容(<& ...

  8. C++ --内存四区概述

    内存四区 代码区:存放函数体第二进制代码,由操作戏台进行管理 数据区:存放全局变量和静态变量以及常量 栈区:由编译器自动分配释放,存放函数的参数值,局部变量等 堆区:由程序员分配和释放,若程序员不是放 ...

  9. 外部调用Tomcat启动脚本后日志中文显示乱码问题的解决

    外部sh脚本如下 #!/bin/bash while read LINE do echo "Hello $LINE!" case $LINE in all) tail -f -n2 ...

  10. C# 序列化和反序列化(xml 文件)

    序列化是将对象保存为文本文件或二进制文件: 反序列化则是读取文件信息,还原为对象: 序列化保存为文本内容,主要是 xml 和 json 两种,这里介绍序列化为 xml 文件的方式. 想要序列化,先要在 ...