2010-03-04 88 views
0

Silverlight控件模型中的某個事件是否在某個項目被數據綁定時引發?我在設計時綁定了大量數據,並希望在數據綁定完成之前顯示動畫。Silverlight DataBinding加載動畫

回答

0

數據綁定完成時沒有發生特定事件。你最好的選擇可能是關閉FrameworkElement.LayoutUpdated事件。這是控件準備好用於用戶交互之前生命週期中的最後一個事件。但是,由於屬性更改,大小更改以及對UpdateLayout()或InvalidateArrange()的明確調用,此事件將繼續進行多次。因此,您必須添加一些額外的邏輯,以確保LayoutUpdated事件保證停止/隱藏您的動畫,例如僅在第一次執行該動畫時,或者如果您確定事件是由於數據綁定更改而被解僱的。

如果控件實際上是您自己的自定義控件,並且您綁定了該控件上的自定義DependencyProperties,那麼您可以在PropertyChangedCallbacks上爲每個屬性發出自己的事件,以表示它們已通過數據綁定更新。

0

這是我做的:

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

這樣perform_onetime_operation將調用不只是第一次綁定發生,但任何時候DataContext的變化意味着數據被重新綁定。