Silverlight中Datagrid添加Button列用于控制单行对象

C# WPF后台动态添加控件(经典) 在Winform中从后台添加控件相对比较容易,但是在WPF中,我们知道界面是通过XAML编写的,如何把后台写好的控件动态添加到前台呢?本节举例介绍这个问题。这里要用到UniformGrid布局,UniformGrid 是一种横向的网格分割、纵向的网格分割分别是均等的分割的布局类型.-. 这里界面添加一个ComboBox用来下拉选择图片数量;-. 添加一个button用来执行图片显示;dispaly下方是图片显示区域。 阅读详情

说明:vs2010 ultimate + silverlight5

本文中所有代码都可以在github中查看,git版本中采用了master-dev的方式。在master中可以查看每一个demo的最后完成,在dev中可以查看每一步的代码。

github地址:git@github.com:kiwiwin/silverlight-demo.git 文件夹名称datagrid-button

 

在这个demo中,我们将会创建由两列构成的DataGrid,一列表示数值,一列是Button按钮。当点击对应行的Button时,对应的数值+1

1.在DataGrid中添加一行表示Button:

        <sdk:DataGrid AutoGenerateColumns="False" Height="276" HorizontalAlignment="Left" Margin="12,12,0,0" Name="numberGrid" VerticalAlignment="Top" Width="376">
            <sdk:DataGrid.Columns>
                <sdk:DataGridTextColumn Width="100" Header="个数" Binding="{Binding Number}"/>
                <sdk:DataGridTemplateColumn Width="100" Header="按钮">
                    <sdk:DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <Button Content="Increase" Click="Increase_click"></Button>
                        </DataTemplate>
                    </sdk:DataGridTemplateColumn.CellTemplate>
                </sdk:DataGridTemplateColumn>
            </sdk:DataGrid.Columns>
        </sdk:DataGrid>


 2.添加点击Button对应的时间处理代码和相应的初始化代码:

需要注意的是,虽然使用了ObservableCollection,但是如果只是修改了ObservableCollection中的一个Item中的值,DataGrid将不会直接更新显示,这里就先赋值null,再赋值原来的items。(ps:如果你有更好的方法,可以在github上发送一个pull request,我会非常感谢你)

    public partial class MainPage : UserControl
    {
        private ObservableCollection<NumberItem> items;

        public MainPage()
        {
            InitializeComponent();
            InitItems();
            numberGrid.ItemsSource = items;
        }

        private void InitItems()
        {
            List<NumberItem> numberItems = new List<NumberItem>();
            numberItems.Add(new NumberItem {Number = 3});
            numberItems.Add(new NumberItem {Number = 4});
            items = new ObservableCollection<NumberItem>(numberItems);
        }

        private void Increase_click(object sender, RoutedEventArgs e)
        {
            var button = sender as Button;
            var item = button.DataContext as NumberItem;
            item.Number += 1;
            numberGrid.ItemsSource = null;
            numberGrid.ItemsSource = items;
        }
    }

    public class NumberItem
    {
        public int Number { get; set; }
    }


3.效果如图:

开始时:

点击了第二行中的Increase按钮以后:

 

 

winform中在datagridview中添加Button按钮 前言: .Net的DataGridView控件中,提供了一种列的类型,叫 DataGridViewButtonColumn ,这种列类型是展示为一个 按钮,可以给button赋予相应的text,并且,此button可以用来做处理事件的判断依据。 DataGridViewButtonColumn,虽然在UI展现上,是一个BUTTON的样子,但是,它的实际形态,并不是传统意义的BUTTON,而是渲染出来的样式,完全是painting的效果而已。所以,对于传统意义的BUTTON的那一套在这里都失效啦 代码实现 阅读详情

相关推荐

智能车竞赛走马观碑组:如何高效识别目标板并优化绕行策略(附实战代码)

本文深入探讨了智能车竞赛走马观碑组中,如何构建从图像识别到路径决策的全栈优化方案。针对目标板识别与绕行策略的核心难点,文章详细解析了基于MobileNetV2的高效识别流水线、结合预瞄点与纯追踪算法的平滑路径规划,以及横向与纵向协同控制策略,并提供了实战代码与调试指南,旨在全面提升小车的比赛表现。

o5p6q的博客 884

WPF datagrid动态增加一例button内容

DataGridTemplateColumn col1 = new DataGridTemplateColumn(); col1.Header = "操作"; FrameworkElementFactory factory1 = new FrameworkElementFactory(typeof(Button)); //b1.Mode = BindingMode.TwoWay; Bi...

easyboot的专栏 1297

在Qt中使用EtherCAT-SOEM的初始化中,状态机卡在PreOp->Save-Op过程中,出现State=0x12, Error=0x001e错误的解决办法

1.在调试EtherCAT软件过程中,一直出现配置从站进不了Save_op状态,通过下函数检查从站状态: //使用的从站编号为1 只有1个从站 ec_slave[1].state = EC_STATE_SAFE_OP; ec_writestate(1); //设置到安全模式 ec_statecheck(1, EC_STATE_SAFE_OP, EC_TIMEOUTSTATE * 4); printf("Slave %d State=0x%2.2x StatusCode=0x%4

zeal_for_rov的博客 6828

WPF中DataGrid增加按钮,绑定Command命令

WPF中DataGrid增加按钮,绑定Command命令

天天代码 2655

Modbus 通信协议详解

Modbus是由 Modicon(现为施耐德电气公司的一个品牌)在 1979 年发明的,是全球第一个真正用于工业现场的总线协议。ModBus网络是一个工业通信系统,由带智能终端的可编程序控制器和计算机通过公用线路或局部专用线路连接而成。其系统结构既包括硬件、亦包括软件。它可应用于各种数据采集和过程监控。为更好地普及和推动Modbus在基于以太网上的分布式应用,目前施耐德公司已将Modbus协议的所有权移交给 IDA(,分布式自动化接口)组织,并成立了 Modbus-IDA 组织。

Projectsauron 的博客 7万+

phpstudy自定义安装mysql8.3并启动

下载压缩包文件然后按下面的图片一步一步操作选择版本,选择第一个压缩包文件,下载下载完成后,解压到phpstudy环境目录下

互联网碎碎念 2801

通过Code Behind的方式,为DataGrid内的Button绑定事件

在Silverlight中,通常为DataGrid内的Button绑定单击事件,只需要在Button的内联属性Click上添加事件方法即可。 <sdk:DataGrid Name="grd"><sdk:DataGrid.Columns><sdk:DataGridTemplateColumn Header="" Width="50" > <sdk...

weixin_30343157的博客 97

如何实现Silverlight DataGrid控件的列宽自动填充

在WinForm中,将DataGridView控件的列的AutoSizeMode属性设置为Fill,然后将FillWeight属性设置为列宽所占的权重,这样可实现列宽自动填充列,下图说明自动填充宽度的算法: 但是在Silverlight中,DataGrid控件的列宽只有四种模式:Auto、Pixel、SizeToCells、SizeToHeader,没有Fill模式,无法实现自动填充列宽。 ...

weixin_33692284的博客 141

手把手教你安装 OpenClaw 小龙虾(MAC安装教程),一次成功不踩坑

本文详细介绍了在Mac上安装OpenClaw的完整流程。主要内容包括:1)准备工作(磁盘空间、网络环境、终端工具);2)安装Homebrew包管理器及常见问题解决;3)安装Node.js 22+版本(环境核心);4)Git安装与验证;5)OpenClaw项目克隆、依赖安装及运行配置;6)大模型配置方法(以MiniMax为例)。文章提供了详细的命令行操作步骤和常见错误解决方案,特别强调了网络环境要求和Apple Silicon芯片的原生支持注意事项。最后展示了验证配置成功的方法和资源获取渠道。

Chengbei11的博客 6338

【100%通过率】2023华为od机试C卷【围棋的气】Python 实现

围棋棋盘由纵横各19条线垂直相交组成,棋盘上一共19 x 19 = 361 个交点,对奔双方一方执白棋,一方执黑棋,落子时只能将棋子置于交点上。 “气”是围棋中很重要的一个概念,某个棋子有几口气,是指其上下左右方向四个相邻的交叉点中,有几个交叉点没有棋子,由此可知:

MISAYAONE的博客 1856

Silverlight中DataGrid滚动条拖动

Silverlight中DataGrid滚动条拖动时出现的问题,比如使用分组时的分组名,拖动时时就变了。有些控制显示与否的也在拖动时出现问题。这个和它本身的加载有关系,都是一些虚拟行。所以只能是屏蔽掉datagrid的本身的滚动属性 如下即可                                                    ItemsSource="{Binding

saxgood的专栏 981

移植Google Gemini Nano到RK3588 NPU,实现高效边缘推理

在嵌入式 AI 开发中,大家常常会遇到模型在硬件平台上运行时出现性能瓶颈的问题,比如推理速度慢、功耗过高,这严重影响了应用的实时性和稳定性 ,导致性能瓶颈,无法满足如智能安防、工业检测等场景的实时性需求。为了解决这些问题,我们可以将轻量模型移植到具有强大算力的硬件平台上。本文将手把手教你将 Google Gemini Nano(或类似轻量模型)移植到 RK3588 NPU,充分发挥 RK3588 NPU 的 6Tops 算力,实现高效的模型推理,提升嵌入式系统的 AI 处理能力。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 293

silverlight中DataGrid单元格变色问题

从silverlight控件DataGrid取出指定单元格并使其变为指定的颜色!

laichunlin的专栏 3085

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

silverlight-dataGrid 多表头样式控制

silverlight前端,用style样式做了多表头样式,但是不满足条件的变化,需要更改样式。这时可以在后台切换样式。 一。     二。                       HeaderStyle="{StaticResource TBIStyle}" CanUserResize="False">                        

u010611867的专栏 466

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

自定义Silverlight DataGrid行列:Defining Columns for a Silverlight DataGrid

This post has been updated to work with the RTW version of the Silverlight 2 DataGrid.  The code examples are not guaranteed to work with previous Beta versions of the DataGrid. Read more about the fe...

weixin_34356555的博客 139

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Silverlight 4中把DataGrid数据导出Excel

Silverlight中常常用到DataGrid来展示密集数据. 而常见应用系统中我们需要把这些数据导入导出到固定Office套件中例如常用的Excel表格. 那么在Silverlight 中如何加以实现? 在参考大量资料后 提供参考思路如下: A:纯客户端导出处理.利用Silverlight 与Javascript 进行交互实现导出Excel. B:服务器端导出.获得DataG

陌上花开 1063

强大的DataGrid组件[7]_自定义DataGrid——Silverlight学习笔记[15]

  基本知识讲解   1)两种状态   DataGrid的单元格的状态有两类,即编辑状态和非编辑状态。   在实际开发中,如果一个单元格所在的列不设为只读的话(即要求可读写),那么这个单元格就存在这两种状态。按需要,这时就应当对这两种状态对单元格分别设定不同的编辑模板。如果该单元格仅用于进行简易的文本编辑,则可保留原有状态,无需重新设定。   这两种编辑模板的标签如下所示: ...

weixin_30745641的博客 107

[转]silverlight Datagrid 行上增加ToolTip

有两种办法:1. 直接在后台处理在数据绑定后 ,注册LoadingRow 事件this.DataGrid.LoadingRow += new EventHandler<DataGridRowEventArgs>(DataGrid_LoadingRow); void DataGrid_LoadingRow(object sender, DataGridRowEventArgs...

admi88888888的博客 280

[Silverlight]DataGrid相关的几个小知识点

1 、列标题居中。 可以通过设置DataGridColumn的HeadStyle实现,HeadStyle的XAML代码如下: <Style x:Key="DataGridHeaderStyle" TargetType="Primitives:DataGridColumnHeader"> <Setter Property="HorizontalContentA...

weixin_34242819的博客 110

Android平台libX265交叉编译实战:从工具链配置到JNI封装

在Android音视频开发中,HEVC软编码常需集成x265库,而交叉编译是必经环节。其原理在于通过NDK工具链将C++源码适配不同CPU架构,并处理汇编优化与ABI兼容性。技术价值在于突破硬编码画质与参数限制,实现高压缩率视频编码。典型应用于推流、录屏及视频压缩场景。本文围绕libX265在Android上的交叉编译,详解NDK选型、CMake配置、分ABI编译及JNI封装,并分享汇编优化取舍与常见报错排查经验。

weixin_34161083的博客 319

医院信息系统架构设计实战:分层、数据库与高可用方案

在医疗信息化领域,HIS系统需处理挂号、医嘱、收费等多业务域交叉逻辑,并满足7×24小时高可用要求。其架构设计通常采用分层架构与模块化单体,结合读写分离、乐观锁、幂等接口等工程实践,确保核心交易强一致与系统稳定。这类设计广泛应用于门诊、住院、医保结算等场景,对开发者理解业务驱动架构具有重要参考价值。本文围绕HIS的分层架构、数据库策略、接口规范与部署方案展开,结合代码示例说明落地方法。

weixin_34259232的博客 379

Silverlight之我见——DataGrid数据验证

用DataGrid进行数据验证,一句话:太简单了,为什么?因为它自身已经具备了很完善的数据验证功能。 好,说多无益,最好的办法,来,写个例子试试。 老规矩,先准备点数据来测试,既然要数据验证,就不能全弄字符串的,弄点整型的,日期型的,这样就有利于演示。   public class Employee { public string Name { get;

老周——“易之道” 3987
上一篇: svn ignore使用方法
下一篇: Ubuntu下配置Intellij的Android开发环境
kiwi小白
博客等级 码龄14年 153粉丝 154原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值