silverlight中ItemsSource和DataContext的用法注意

本文详细介绍了WPF中DataGrid控件的数据绑定方法,包括ItemsSource和DataContext的使用,解决绑定List时的问题,以及如何对DataGrid的单元格进行赋值和计算某列的和。同时提供了代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

               

数据绑定

WPF之DataGrid应用

WPF 4 DataGrid 控件(基本功能篇)

silverlight中ItemsSource和DataContext的用法注意

ItemsSource 通常是一个集合或列表元素,用来设置DataGrid等如何显示元素,无法让其子元素继承使用

 

DataContext,数据上下文用来设置DataGrid的数据源,数据源可以是集合或属性或其他元素。在Silverlight中某个父级元素设置了DataContext,其子元素将可以继承并且使用DataContext中的属性。 

 

1.在XAML中设置DataGrid的ItemsSource={Binding xx}

2.codebehind中通过dataGrid.DataContext = List<class>来设置DataContext。


WPF_DataGrid_ItemsSource绑定

应用 WPF DataGrid ItemsSource 绑定的时候,遇到几个问题:

1.  报错:此视图不允许“EditItem”。

2.  绑定了 List<string> 到 ItemsSource 但是 List<string> 变化的时候,ItemsSource 不发生变化。


解决方法:

1. 现测是因为 ItemsSource 没有绑定,无法定位视图?因为我绑定了ItemsSource 以后就没有这个问题了,可以编辑了。

2. 使用 ObservableCollection<string>,因为 List<string> 没有实现 INotifyCollectionChanged 接口,这个接口会定义一个事件,这个事件会通知上层,添加或者删除的时候会触发。ObservableCollection 默认实现这个接口,使用方法和 List 一样,当然也可以自己写个类,实现 INotifyCollectionChanged 接口。


WPF DataGrid实现为某个单元格赋值、获取某列的和、积等

一、DataGrid实现为某个单元格赋值

在WPF中,要对DataGrid的某个单元格进行赋值。一般不便直接对DataGrid赋值。而是对其绑定的数据源进行赋值。

现在假定有: dt_Common 为DataTable类型,dataGrid_CommonSeat为某个DataGrid.可以通过以下方式绑定:

                //绑定普通坐席数据                dt_Common = (DataTable)DBHelper.ExecSql(sql_Common, conStr, DBHelper.OperateType.Select);                dataGrid_CommonSeat.ItemsSource = dt_Common.DefaultView;


现在要对其中的某些单元格进行赋值。则可以通过对齐绑定的数据源dt_Common 进行赋值来实现。


                            string price = dt_Common.Rows[dataGrid_CommonSeat.SelectedIndex][1].ToString();                            string count = dt_Common.Rows[dataGrid_CommonSeat.SelectedIndex][2].ToString();                            if (string.IsNullOrEmpty(price) || string.IsNullOrEmpty(count))                                return;                            double d = double.Parse(price) * double.Parse(count);                            dt_Common.Rows[dataGrid_CommonSeat.SelectedIndex][4] = d;

这样,就对dataGrid_CommonSeat的当前行第4列的单元格内容赋值成功了。

二、获取DataGrid某列的和、积等

这个很简单,遍历、判断不为空则相加或想减相乘即可。下面是封装的一个方法。改改就可以自己用了。


        /// <summary>        /// 获取DataGrid中第index列的值的和        /// </summary>        /// <param name="datagrid">宿主DataGrid</param>        /// <param name="index">列下标.</param>        /// <returns></returns>        /// <Author> frd 2011-9-20 20:03</Author>        public static double GetDataGridColumnSum(DataGrid datagrid, int index)        {            double result = 0;            double temp = 0;            for (int i = 0; i < datagrid.Items.Count; i++)            {                DataRowView mySelectedElement = datagrid.Items[i] as DataRowView;                if (mySelectedElement == null)                    continue;                double.TryParse(mySelectedElement.Row.ItemArray[index].ToString(), out temp);                result += temp;            }            return result;        }




           

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.youkuaiyun.com/jiangjunshow

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值