关于Binding属性上的几个小知识点

Posted on 2012-09-04 15:04  网络游魂  阅读(572)  评论(0)    收藏  举报

在这之前,我想说一下我遇到个小但是让我很不爽的问题

在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>

参考连接 http://interactiveasp.net/blogs/natesstuff/archive/2009/01/21/6-things-i-bet-you-didn-t-know-about-data-binding-in-wpf.aspx

  

博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3