• 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

  • 相关阅读:
    五、面向对象模型OOM(ObjectOriented Model)
    四、物理数据模型PDM(Physical Data Model )
    Asp.net WebForm中应用Jquery EasyUI Layout
    七、模型文档
    六、PowerDesigner 正向工程 和 逆向工程 说明
    JQuery 原理
    三、概念数据模型CDM(Conceptual Database Model )
    C#基础Func,Action
    Ioc容器应用浅析
    Discuz上面找到的不错的分页算法
  • 原文地址:https://www.cnblogs.com/626498301/p/2611802.html
Copyright © 2020-2023  润新知