原文: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. C# ThreadPool 线程池

    Thread与ThreadPool Thread: .NetFramework1.0  对线程对象的一个封装 Thread方法很多很强大,但是太过强大,而且没有限制 功能繁多,反而用不好--就像给4岁 ...

  2. 学习 C#,从 Hello world 开始吧

    目录 Hello world 创建.编辑.编译和运行 C# 源代码 使用 .NET Core 命令行接口 (CLI) 工具 使用 Visual Studio 创建项目 编译和执行 总结 C#(读作 & ...

  3. CefSharp 无法输入中文的问题

    在CefSharp75版本,使用了WpfImeKeyboardHandler支持后,无法支持搜狗中文输入法 其中的一个修复方案: 在ChrominumWebBrowser中,添加焦点事件的重写,对In ...

  4. Spring基础——AOP通知

    spring(AOP通知) 切面 切面是封装通用业务逻辑的组件,可以作用到其他组件上.是spring组件中的某个方法.无返回类型.参数类型与通知类型有关.一个切面 开启数据库 关闭数据库 开启事务 检 ...

  5. node-sass 埋坑记录

    node-sass 埋坑记录 背景 原有项目.环境: node:v8.16.2 npm:v6.4.1 node-sass::v4.8.0 Angular-CLI:v6.x 本机没有安装 Visual ...

  6. CSS入门(定位的简单总结)

    一.定位 普通流定位 浮动定位 相对定位 绝对定位 固定定位 二.position定位 1.static(默认值) 2.relative 相对定位 3.absolute 绝对定位 4.fixed 固定 ...

  7. NuGet修改默认包保存的位置

    NuGet默认的全局包下载地址一般为:C:\Users\{username}\.nuget\packages 修改方法: <?xml version="1.0" encodi ...

  8. 微信小程序连接低功率蓝牙控制单片机上硬件设备

    1.软件部分介绍 微信小程序是一种新的应用,用户不需要下载应用只用通过扫二维码或者打开链接就能使用,使用完后不需要卸载,直接关闭就行了.微信在2017年初推出微信小程序开发环境.任何企业,媒体,个人都 ...

  9. Android app targetSdk升级到27碰到的一个bug补充说明

    版权声明:本文为xing_star原创文章,转载请注明出处! 本文同步自http://javaexception.com/archives/203 完美解决google nexus设备全面屏主题cra ...

  10. OS X 下 OpenGL 4.x 环境配置

    配置: OS X 10.10 + CMake 3.2.2 + GLFW 3.1.1 + OpenGL 4.1 + Xcode 6.0 本文主要介绍如何在 OS X 系统下进行环境配置,使得 Xcode ...