Загрузка анимации привязки данных Silverlight - PullRequest
0 голосов
/ 04 марта 2010

Есть ли где-нибудь событие в модели управления Silverlight, которое возникает, когда элемент привязан к базе данных?Во время разработки я привязываю к большому количеству данных и хотел бы отображать анимацию, пока привязка данных не будет завершена.

Ответы [ 2 ]

0 голосов
/ 04 марта 2010

Вот что я делаю:

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

Таким образом, perform_onetime_operation будет вызываться не только в первый раз, когда происходит привязка данных, но каждый раз, когда DataContext изменяется, что означает повторное связывание данных.

0 голосов
/ 04 марта 2010

Нет определенного события, которое вызывается, когда привязка данных завершена. Лучше всего было бы отключить событие FrameworkElement.LayoutUpdated . Это последнее событие в жизненном цикле перед тем, как элемент управления готов к взаимодействию с пользователем. Однако это событие будет по-прежнему вызываться много раз из-за изменений свойств, изменения размера и явных вызовов UpdateLayout () или InvalidateArrange (). Поэтому вам нужно будет добавить некоторую дополнительную логику, чтобы убедиться, что событие LayoutUpdated гарантирует остановку / скрытие вашей анимации, например, выполнение только в первый раз или если вы уверены, что событие было запущено из-за изменения привязки данных.

Если на самом деле этот элемент управления является вашим собственным пользовательским элементом управления, и вы привязываете пользовательские свойства DependencyProperties для этого элемента управления, вы можете вызвать собственное событие в PropertyChangedCallbacks для каждого из свойств, чтобы указать, что они были обновлены с помощью привязки данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...