在这之前,我想说一下我遇到个小但是让我很不爽的问题
在xaml中,引入命名空间
xmln:sys="clr-namespace:System;assembly=mscorlib"
声明一个double类型数据
<sys:Double x:key="xx">1234</sys:Double>
然后绑定
<TextBox text={Binding Source={StaticResource xx}}/>
其实这样已经正确,可是我想让其格式化(2种方式)
第一种,写了一个转换器(只实现了Convert,没有实现ConvertBack)
<TextBox text={Binding Source={StaticResource xx},Converter={StaticResource yy}}/>
编译通过,可是一运行就报错,说什么System.Window.Data.Binding上提供的值引发了异常,于是就开始找,找了好一会也没发现有什么不对的,最后我将TextBox改成TextBlock,编译通过,运行正确,我就纳闷了。最后我才发现原来是绑定模式出了问题,TextBlock默认是单向模式,而TextBox双向模式,因为我没有实现ConverBack,才导致出错,在TextBox里面加上Model=OneWay or OneTime。不知道你们是否遇到过。
第二种绑定方式
<TextBox text={Binding Source={StaticResource xx},StringFormat=\{0:F3\}}/>感觉这种方式很简单,当然也可以对绑定的多个进行格式化,如
<TextBox.Text>
<MuliBinding StringFormat="{}{0},{1}">
<BindingOne/>
<BindingTwo/>
......
</MuliBinding>
<TextBox.Text>
关于Binding其它几个属性的用法
TargetNullValue 如:<CheckBox IsChecked={Binding ss,TargetNullValue=false} Cotent="xx"/>,TargetNullValue的类型要与所绑定的类型一致。
FallbackValue 主要用于所绑定的数据出现错误时显示
支持异步绑定,如
<TextBox.Text>
<PirorityBinding>
<Binding Path=“name”,IsAsync="True"/>
</PriorityBinding>
<TextBox.Text>
浙公网安备 33010602011771号