Допустим пропал интернет, и необходимо чтобы снизу не на долго появилась надпись "проверьте подключение к интернету". На андроиде такое есть, а вот на Windows UWP я найти никак не могу...
Я считаю, что более правильное решение — использовать средства, предоставляемые ОС, являющиеся ее частью дизайна. В UWP для нотификаций используются плитки, бейджи и "тосты", вот именно "тосты" (toast notifications
) и подойдут вам в этой ситуации.
Для удобного формирования разметки toast notification (а они размечаются в XML) я использую Microsoft.Toolkit.Uwp.Notifications
, вот здесь есть несколько примеров использования пакета на все случаи жизни: Adaptive and interactive toast notifications for Windows 10.
Я набросал следующий класс:
class Toaster
{
public static void Show()
{
ToastContent toastContent = new ToastContent
{
Visual = new ToastVisual
{
BindingGeneric = new ToastBindingGeneric
{
Children =
{
new AdaptiveText
{
Text = "Проверьте подключение к интернету"
}
},
AppLogoOverride = new ToastGenericAppLogo
{
Source = "disconnect.png",
HintCrop = ToastGenericAppLogoCrop.Circle
}
}
}
};
var toast = new ToastNotification(toastContent.GetXml());
ToastNotificationManager.CreateToastNotifier().Show(toast);
}
}
Теперь из подписчика на нужное событие вы можете вызвать:
Toaster.Show();
И появится сообщение, смартфона с Windows у меня больше нету, поэтому не могу показать с него скрин, но в десктопной версии это выглядит так:
Другой способ, который мне нравится меньше. Он требует чтобы все ваши Page
имели в качестве корневого элемента любую панель (любой производный класс от Panel
).
Добавьте в нужный обработчик следующий код:
await CoreApplication.MainView.CoreWindow
.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, async () =>
{
var rootPanel = ((Window.Current.Content as Frame)?.Content as Page)?.Content as Panel;
if (rootPanel == null) return;
var tt = new ToolTip
{
Margin = new Thickness(5, 0, 5, 50),
HorizontalAlignment = HorizontalAlignment.Stretch,
VerticalAlignment = VerticalAlignment.Bottom,
Content = new TextBlock
{
Text = "Проверьте подключение к интернету",
TextWrapping = TextWrapping.WrapWholeWords,
HorizontalAlignment = HorizontalAlignment.Center
}
};
rootPanel.Children.Add(tt);
await Task.Delay(TimeSpan.FromSeconds(1));
rootPanel.Children.Remove(tt);
});
Он создает ToolTip
, помещает его на панель, ждет секунду и удаляет его.
По хорошему шаблон тултипа нужно поместить в ресурсы App.xaml
или в библиотеку ресурсов.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть простейшее MVC приложение из кнопки <button> и текстового поля <text>Как при клике на кнопку изменить текст в <text>? У меня вот такой...
Как отправить запрос я разобрался (использую библиотеку xNet), а как изменить его тело нет, дайте пример с использованием xNet или стандартных...
В качестве аргумента у метода нужен делегат Func в котором первый параметр - Type не известен: