【问题标题】:Silverlight DataBinding Loading AnimationSilverlight DataBinding 加载动画
【发布时间】:2010-03-04 17:41:51
【问题描述】:

Silverlight 控件模型中的某处是否存在在项被数据绑定后引发的事件?我在设计时绑定了大量数据,并希望在数据绑定完成之前显示动画。

【问题讨论】:

    标签: silverlight data-binding


    【解决方案1】:

    数据绑定完成时不会触发特定事件。您最好的选择可能是关闭FrameworkElement.LayoutUpdated 事件。这是控件准备好进行用户交互之前的生命周期中的最后一个事件。但是,由于属性更改、大小更改以及对 UpdateLayout() 或 InvalidateArrange() 的显式调用,此事件将继续引发更多次。因此,您必须添加一些额外的逻辑以确保 LayoutUpdated 事件保证停止/隐藏您的动画,例如仅在第一次执行此操作或您确定该事件是由于数据绑定更改而被触发时。

    如果控件实际上是您自己的自定义控件,并且您正在绑定到该控件上的自定义 DependencyProperties,那么您可以在 PropertyChangedCallbacks 上为每个属性引发您自己的事件,以表明它们已通过数据绑定更新。

    【讨论】:

      【解决方案2】:

      这是我的工作:

      private object lastDataContext;
      private void MyClass_Loaded(object sender, RoutedEventArgs e)
      {
          if (DataContext != lastDataContext)
          {
              perform_onetime_operation();
              lastDataContext = DataContext;
          }
      }
      

      这样,perform_onetime_operation 不仅会在第一次发生数据绑定时被调用,而且会在 DataContext 发生变化的任何时候被调用,这意味着数据被重新绑定。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多