2009-07-29 5 views
3

У меня есть ListView со многими элементами, которые необходимо загрузить в поиске. И я хотел бы предоставить пользователю более богатый пользовательский интерфейс, чтобы при загрузке я бы показал вращающийся круг (известный из ожидаемого AJAX).WPF Загрузка анимации

Я понимаю, что мне придется идти в Threads или что-то в этом роде, но поскольку я никогда не делал этого раньше в WPF, я уверен, что есть что-то лучше, чем Threads в WPF (или Simpe BackgroundWorker).

В любом случае, необходимо отобразить эту анимацию во время загрузки. Любая идея? Благодаря!

ответ

2

OK У меня есть рабочее решение в настоящее время.

У меня есть UserControl, который содержит эту анимацию. Он находится где-то в моем коде XAML следующим образом: <customControls:LoadingAnimation x:Name="LoadingAnimation" />. Этот элемент управления загружается при Neede по телефону

LoadingAnimation.Show(); 

Теперь, когда я нажимаю на кнопку, чтобы сделать трудоемкую работу, прежде чем я называю BeginInvoke() Я загрузить анимацию.

Затем, когда тяжелая работа завершена, я звоню LoadingAnimation.Hide(). Очень просто! Я добавлю код для остальных:

private void SearchClick(object sender, RoutedEventArgs e) 
{ 
    LoadingAnimation.Show(); 

    new StringDelegate(DoSearch).BeginInvoke("TextToSearch", null, null); 
} 

private void DoSearch(string searchText) 
{ 
    object result = /* Do the time consuming work */  

    Dispatcher.BeginInvoke(DispatcherPriority.Normal, 
     new ResultDelagate(UpdateUserInterface), result); 
} 

private void UpdateUserInterface(object result) 
{ 
    LoadingAnimation.Hide();    

    DataContext = result as /* what you want */; 
} 
+0

Просто интересно, как вы решили отменить часть? – cwap

+1

Просто введите статус, IsSearching и используйте datatriggers для отображения и скрытия пользовательского элемента управления – TerrorAustralis

Смежные вопросы