我们提供安全,免费的手游软件下载!
在数据绑定过程中,我们通常使用StringFormat对要显示的数据进行格式化,以便获得更为直观的展示效果。但在某些情况下,如Button的Content属性以及ToolTip属性绑定数据进行StringFormat时会失效。首先,我们回顾一下StringFormat的基本用法。
StringFormat是BindingBase的属性,用于指定当绑定值显示为字符串时应如何设置该绑定的格式。因此,BindingBase的三个子类:Binding、MultiBinding、PriorityBinding都可以对绑定数据进行格式化。
Binding是最常用的绑定方式。使用StringFormat遵循.Net格式字符串标准即可。例如:
Binding绑定时,格式化只能指定一个参数,而MultiBinding绑定时则可指定多个参数。例如:
相比于前两种绑定,PriorityBinding使用的频率不那么高。它的主要作用是按照一定优先级顺序设置绑定列表。PriorityBinding和其包含的绑定列表中的子Binding也都可以设置StringFormat属性。
Button的Content属性可以用字符串赋值并显示在按钮上,但使用StringFormat格式化并不会生效。在BindingExpressionBase中有一段代码,其中的DetermineEffectiveStringFormat()方法检测有效的StringFormat。这段代码的作用就是检测有效的StringFormat,并通过SetValue方法保存起来。Button的Content属性虽然可以用字符串赋值,但它实际上是Object类型,因此在检测有效的StringFormat表达式时会直接过滤掉。ToolTip也同样是Object类型。
对于Content这种Object类型的属性需要绑定字符串并且需要格式化时,可以采用以下三种方式解决:
数据绑定时出现StringFormat失效的主要分为两种情况。一是没有遵循绑定时StringFormat使用的约束,二是绑定的目标属性不是String类型。
热门资讯