Binding.Path 属性包含.句号如何绑定和排序?

 
【原创】Binding.Path 属性包含.句号如何绑定和排序?
2011-07-31 1:29

每个绑定通常都具有四个组件:绑定目标对象、目标属性、绑定源,以及要使用的绑定源值的路径。 有关这些数据绑定概念的更多信息,请参见数据绑定概述

使用Path属性可以指定您要绑定到的源值:

  • 在最简单的情况下,Path属性值是要用于绑定的源对象的属性名,如Path=PropertyName

  • 通过类似于 C# 中使用的语法,可以指定属性的子属性。 例如,子句Path=ShoppingCart.Order设置与对象或属性ShoppingCartOrder子属性的绑定。

  • 若要绑定到附加属性,应在附加属性周围放置圆括号。 例如,若要绑定到附加属性 DockPanel.Dock,则语法是Path=(DockPanel.Dock)

  • 可以在要应用索引器的属性名后面的方括号内指定属性的索引器。 例如,子句Path=ShoppingCart[0]将绑定设置为与属性的内部索引处理文本字符串“0”的方式对应的索引。 此外,还支持多个索引器。

  • 可以在Path子句中混合索引器和子属性;例如,Path=ShoppingCart.ShippingInfo[MailingAddress,Street].

  • 在索引器内部,您可以有多个由逗号 (,) 分隔的索引器参数。 可以使用圆括号指定每个参数的类型。 例如,您可以有Path="[(sys:Int32)42,(sys:Int32)24]",其中sys映射到System命名空间。

  • 如果源为集合视图,则可以用斜杠 (/) 指定当前项。 例如,子句Path=/用于设置到视图中当前项的绑定。 如果源为集合,则此语法指定默认集合视图的当前项。

  • 可以结合使用属性名和斜杠来遍历作为集合的属性。 例如,Path=/Offices/ManagerName指定源集合的当前项,该源集合包含也作为集合的Offices属性。 其当前项是一个包含ManagerName属性的对象。

  • PART_TopHeaderGripper 例如,Text="{Binding}"等效于Text="{Binding Path=.}"

有关路径语法的信息,请参见绑定声明概述PropertyPath XAML 语法

有关 XML 绑定,请参见XPath属性。

若要绑定到整个对象,则不必指定Path属性。 有关更多信息,请参见数据绑定概述中的“指定值的路径”。

绑定索引器示例:
1.ViewModel
using
System;
using
System.Data;

namespace
BindingWithPeriod
{
publicclass
TestViewModel
{
public
TestViewModel()
{
CurrentDataTable
=new
DataTable();
CurrentDataTable.Columns.Add(
newDataColumn("ID",typeof(string
)));
CurrentDataTable.Columns.Add(
newDataColumn("Number.A",typeof(int
)));
Random random
=new
Random();
for(inti=1; i<=100; i++
)
{
DataRow row
=
CurrentDataTable.NewRow();
row[
0]=
i.ToString();
row[
1]=random.Next(-10000,10000
);
CurrentDataTable.Rows.Add(row);
}
}

publicDataTable CurrentDataTable {get;set
; }
}
}
2.Binding
//如果列名包含句号,则给他一个新的绑定

//为了兼容句号,新绑定用[]索引器,索引器内可含句号.
if(e.PropertyName.Contains("."
))
{
stringpath=string.Format("[{0}]"
, e.PropertyName);
((DataGridBoundColumn)e.Column).Binding=new
Binding(path);
}
3.排序
stringcolumnName=
e.Column.Header.ToString();
//如果列名包好句号,则去除[]使DataView自动排序
//SortMemberPath可以包含句号,详见MSDN,故去除用于排序
if(columnName.Contains("."
))
{
e.Column.SortMemberPath=columnName.Trim(newchar[] {'[',']'
});
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值