Создание общей анимации загрузки в mvvm - PullRequest
3 голосов
/ 25 июля 2009

У меня есть приложение mvvm, которое получает много данных с удаленного сервера. Я хочу добавить анимацию во время загрузки данных, какой лучший способ сделать это.

Ответы [ 2 ]

3 голосов
/ 26 июля 2009

Одним из способов является использование свойства в модели представления с именем IsLoadingData. Затем вы можете привязать его к свойству Visibility элемента управления, в котором размещена анимация, с помощью BooleanToVisibilityConverter.

Visibility={Binding 
    Path=IsLoadingData, 
    Converter={StaticResource BooleanToVisibilityConverter}}

Затем этот элемент управления может использовать ControlTemplate для запуска раскадровки, содержащей анимацию, когда для VisibilityProperty установлено значениеtrue.

<ControlTemplate.Triggers>
    <Trigger Property="IsVisible" Value="True">
        <Trigger.EnterActions>
            <BeginStoryboard 
                x:Name="Storyboard0" 
                Storyboard="{StaticResource Animation0}" 
                />
        </Trigger.EnterActions>
    </Trigger>
</ControlTemplate.Triggers>

Образец этой анимации см. в моем блоге , содержащем полный источник.

1 голос
/ 25 июля 2009

Надеюсь, у вас может быть DataTemplate для объекта, который вы хотите отобразить. Убедитесь, что вы уже связали пустой экземпляр того же самого с пользовательским интерфейсом, чтобы экземпляр DataTemplate создавался до загрузки данных. Пусть Объект имеет свойство IsLoaded / IsRefreshed. Затем вы можете написать DataTrigger для DataTemplate, чтобы запускать и останавливать анимацию загрузки (или обновления данных), пока IsLoaded переходит от виртуальной машины. Как только это правда, вы можете сделать анимацию анимации свернутой (или медленной анимацией затухания), чтобы все данные былихорошо отображается.

У меня есть старый блог, который делает что-то похожее здесь http://jobijoy.blogspot.com/2009/07/easy-way-to-update-all-ui-property.html, Еще один совет, который может быть полезен для вас, - событие Raise NotifypropertyChanged со значением null, так как PropertyChangedEventArgs сообщит все привязки свойств таблицы данныхобновить.

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