Как я могу отобразить окно сообщений или некоторое другое подобное уведомление шоу в то время как приложение занято в фоновом режиме, подобно этот макет:окно сообщений, пока занято в WPF
ответ
Существует в Busy IndicatorWPF Extended Toolkit, который я использовал довольно много:
инструментарий удобно доступен через NuGet, что делает его очень легко добавить его в качестве ссылку на ваш проект. Я лично использовал его (наряду со многими другими полезными элементами управления в этом наборе инструментов) почти во всех моих недавних проектах WPF.
Чтобы использовать его, окружают элементы управления в коде XAML с шумным индикатором:
<extToolkit:BusyIndicator ...>
<Grid>
<Button Content="Click to do stuff" />
<!-- your other stuff here -->
</Grid>
</extToolkit:BusyIndicator>
Тогда вы просто должны установить IsBusy
свойства true
, когда вы хотите, всплывающее окно появятся и ложный, когда он должен быть скрытым. В правильной архитектуре MVVM, то, как правило, привязка свойства в XAML свойству в вашем ViewModel, которые вы затем установить истину/ложь соответственно:
<extToolkit:BusyIndicator IsBusy="{Binding IsBusy}" >
Но если вы не используете MVVM, вы можете, конечно, установить его вручную из кода позади, как правило, в обработчике нажатия кнопки:
Дайте элементу управления имя, чтобы иметь возможность обращаться к нему из кода:
<extToolkit:BusyIndicator x:Name="busyIndicator" >
И затем, в файле xaml.cs :
void myButton_Click(object sender, RoutedEventArgs e)
{
busyIndicator.IsBusy = true;
// Start your background work - this has to be done on a separate thread,
// for example by using a BackgroundWorker
var worker = new BackgroundWorker();
worker.DoWork += (s,ev) => DoSomeWork();
worker.RunWorkerCompleted += (s,ev) => busyIndicator.IsBusy = false;
worker.RunWorkerAsync();
}
Благодарим вас за помощь – murmansk
Если код MVVM легко:
1.) Добавить логический флаг "IsBusy" к вашему ViewModel с уведомлением об изменениях.
public bool IsBusy {get {return _isBusy;} set{_isBusy=value;OnPropertyChanged("IsBusy");}}
private bool _isBusy;
2.) Добавьте два события в вашей команде "Начало" и "Завершено"
public event Action Completed;
public event Action Started;
3.) В вашей ViewModel, подписаться на эти события и установить состояние занятости.
LoadImagesCommand.Started += delegate { IsBusy = true; };
LoadImagesCommand.Completed += delegate { IsBusy = false; };
4.) В окне, теперь вы можете связать с этим статусом
<Popup Visibility="{Binding Path=IsBusy,Converter={StaticResource boolToVisibilityConverter}}"/>
Обратите внимание, что для последнего шага вы должны boolToVisibilityConverter в создании экземпляра, так:
5.) Добавить следующие для любого загруженного словаря ресурсов:
<BooleanToVisibilityConverter x:Key="boolToVisibilityConverter"/>
Вот и все! Вы можете заполнить свой всплывающий экран тем, что хотите ...
И если вы не используете MVVM, это также легко; это не имеет ничего общего с MVVM. Вы можете делать все, что вы можете сделать с MVVM, но это не так просто. –
Я не думаю, что этот материал MVVM входит в мой мозг, я довольно новичок в WPF, это их простой метод, используя только файлы .caml и .xaml.cs. – murmansk
Используя xaml.cs, вы можете это сделать. Только это сделает ваш пользовательский интерфейс немного более насыщенным по статусу, но в основном вы можете определить всплывающее окно в вашем XAML, а затем использовать Popup.Visibility = Visibility.Hidden/Visible, чтобы скрыть или показать ваше всплывающее окно. –
- 1. Конфигурирование приложения занято Окно
- 2. Окно OpenGL всегда занято
- 3. Окно сообщений дважды появляется - WPF
- 4. Фильтр сообщений указывается, что приложение занято
- 5. Проверьте, открыто ли окно сообщений WPF C#?
- 6. занято окно индикатора с помощью формы Windows
- 7. Как обновить текст в UpdatePanel, пока приложение занято
- 8. Кнопки не отвечают на форму, пока приложение занято
- 9. Окно WPF Окно
- 10. Окно сообщений в CATScript
- 11. Окно сообщений в ASP.NET
- 12. WPF Подождите, пока пользовательский ввод
- 13. Окно сообщений vba
- 14. Окно мерцания при позиционировании в WPF
- 15. Как показать waitcursor, когда приложение WPF занято привязкой данных
- 16. Занято в AWT
- 17. Отключить основное окно WPF
- 18. Как отключить окно wpf?
- 19. Как сделать главное окно ждать, пока вновь открытое окно не закроется в C# WPF?
- 20. Несколько сообщений окно в C#
- 21. Окно сообщений в Adobe Air
- 22. Нежелательные окно в блоггер сообщений
- 23. Показать окно сообщений в JavaScript
- 24. окно сообщений не показало
- 25. Окно сообщений Windows 8
- 26. Минимизировать окно в WPF?
- 27. Полноэкранное окно в WPF
- 28. Отправить в окно WPF
- 29. Отображаемое окно в WPF?
- 30. Диалоговое окно запроса приложения Facebook продолжает загружаться/занято
Вы имеете в виду ожидающее уведомление, такое как Glass-Hour? –
Возможный дубликат [Есть ли окно сообщений WPF?] (Http: // stackoverflow.com/questions/3830228/is-there-a-wpf-message-box) Или вы всегда можете создать свое собственное окно ... –
@CodyGray: Я не это, что подразумевает OP, тем больше ждет значок отображается, когда обработка выполняется в пользовательском интерфейсе. –