Silverlight:UpdateSourceTrigger属性的应用

      在Silverlight/WPF的BindingExpression中,我们可以对一个Bind定义UpdateSourceTrigger属性,但是在Silverlight里只提供了显式更新和默认方式(即失去焦点时触发),

所以如果我们需要TextBox在输入时即进行数据源的更新,我们需要进一步处理一下,那么如果你熟悉这个功能的话,你在网上能很快搜索出来类似下面的Code:

  TextBox txt = sender as TextBox;
  var bindingExpression = txt.GetBindingExpression(TextBox.TextProperty);
  if (bindingExpression != null)
  {
    bindingExpression.UpdateSource();
  }

     那么本篇我仿照前一篇Grid扩展附加属性的做法,实现这个功能,首先声明UpdateExplictProperty

  public static bool GetUpdateExplict(DependencyObject obj)
  {
    return (bool)obj.GetValue(UpdateExplictProperty);
  }
   public static void SetUpdateExplict(DependencyObject obj, bool value)
   {
    obj.SetValue(UpdateExplictProperty, value);
   }
    public static readonly DependencyProperty UpdateExplictProperty =
    DependencyProperty.RegisterAttached("UpdateExplict", typeof(bool), typeof(TextBoxExtension), new PropertyMetadata(false, UpdateOnPropertyChangedPropertyCallback));
  在UpdateOnPropertyChangedPropertyCallback中对TextBox的TextChanged进行处理,这里的处理逻辑与开头的代码是一致的.

  最终我们在使用这个附加属性时,如下的XAML就可以:

   <TextBox Text="{Binding FirstName,Mode=TwoWay}" UpdateTextBox:TextBoxExtension.UpdateExplict="True"></TextBox>

  其实对于这个功能,也可以使用Behavior去封装,近期发的两篇文章都是用附加属性来解决问题的,实际也在强调附加属性在Silverlight项目应用的意义所在。

 

 

  下载代码:TextBoxExtension.rar

转载于:https://www.cnblogs.com/626498301/archive/2012/07/27/2611802.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值