место в рейтинге
  • 235418
  • 2163
  • 79
Нравится блог?
Подписывайтесь!

WebView vs SettingsFlyout

Сегодня я столкнулся с интересной проблемой, когда разрабатывал
приложение для Windows 8.

Есть WebView который отображает сайт и есть хедер с заголовком сайта и
контролами для лайков, комментирования и шейринга представленных AppBarButton.
Все просто правда?

Двигаемся дальше. Для комментирования я решил использовать Windows 8 Settings Panel.


Которая и вызывается при нажатии CommentButton. А тут, Тим Хейер создал очень удобный контрол
для создания-управления контролами и входящий в его Windows 8 Callisto library(который
распространяется через NuGet) назвав его SettingsFlyout.
Добавив немного своего кода я проверил на SF на жизнеспособность.

И как всегда я ожидал такого результата:

А получил вот такой:

Что же делать?

Самый очевидный ответ это найти Тима, поговорить с Тимом и узнать у него
очевидную вещь SF работает и вызывается. Что он мне наглядно показал.
Значит проблема была в WebView. И в голову закралась первая мысль
"а что если это из-за очередности появления WebView и SF. SF вызывается
но его не видно так как WebView закрывает его полностью.

Так как же исправить!?


Слегка погуглив я нашел control который называется WebViewBrush и из официальных MSDN источников ознакомился с его предназначением.

 

WebView has the characteristic that other UI regions such as controls cannot be rendered on top of 
the WebView. This is because of how window regions are handled internally, particularly how input
events are processed and how the screen draws. If you want to render HTML content and also place
other UI elements on top of that HTML content, you should use WebViewBrush as the render area.
The WebView still provides the HTML source information, and you reference that WebView through
element name binding and the SourceName property.WebViewBrush does not have this overlay limitation.

Самое смешное что мы не можем использовать WebViewBrush на прямую чтобы отобразить контент.

Документация гласила что: когда SF вызывается, мы должны "захватить" нынешний контент WebView в WebViewBrush и отобразить его через RectangleTool и следом прячя WebView. А когда SF закрывается вернуть обычный WebView.

Вот как то сдлеал я:

private void RegisterForCommands(SettingsPane sender, SettingsPaneCommandsRequestedEventArgs args)
{
var feedsCommand = new SettingsCommand("manageFeedsCommand", "Manage Feeds", (feedCommand) =>
{
// Создаем флайаут
SettingsFlyout settings = new SettingsFlyout();
settings.Closed += (s, e) =>
{
FeedItemWebView.Visibility = Windows.UI.Xaml.Visibility.Visible;
FeedItemWebViewRect.Fill = new SolidColorBrush(Windows.UI.Colors.Transparent);
};
settings.FlyoutWidth = SettingsFlyout.SettingsFlyoutWidth.Wide;
settings.HeaderBrush = new SolidColorBrush(App.VisualElements.BackgroundColor);
settings.HeaderText = "Manage Feeds";
BitmapImage bmp = new BitmapImage(App.VisualElements.SmallLogoUri);
settings.SmallLogoImageSource = bmp;
settings.Content = new SettingsContent();

// Прячем webView
WebViewBrush b = new WebViewBrush();
b.SourceName = "FeedItemWebView";
b.Redraw();
FeedItemWebViewRect.Fill = b;
FeedItemWebView.Visibility = Windows.UI.Xaml.Visibility.Collapsed;

// Показываем панель
settings.IsOpen = true;

});
args.Request.ApplicationCommands.Add(feedsCommand);
}

Итак, не самое лучше решение, но достаточно чтобы все работало как надо.

Дулат Ходжаберген Stark
Мои интересы скажут, обо мне больше, чем я сам когда -либо смогу.
6 мая 2013, 15:52
368

Loading...

Комментарии

Лучше бы ты это в Хабре запостил, здесь интересы народа другие..

Оставьте свой комментарий

Спасибо за открытие блога в Yvision.kz! Чтобы убедиться в отсутствии спама, все комментарии новых пользователей проходят премодерацию. Соблюдение правил нашей блог-платформы ускорит ваш переход в категорию надежных пользователей, не нуждающихся в премодерации. Обязательно прочтите наши правила по указанной ссылке: Правила

Также можно нажать Ctrl+Enter

Популярные посты

Самый большой провайдер в стране: методы работы с клиентами от «Казахтелеком»

Самый большой провайдер в стране: методы работы с клиентами от «Казахтелеком»

История о том, как Народный провайдер наваривается на своих клиентах, намерено не отключая услуги, и беря лишние деньги за ненужные и не оказываемые услуги.
ligaspravedlivosti
17 нояб. 2017 / 19:12
  • 32942
  • 194
Бесспорные доказательства – путь к упрощенному судопроизводству

Бесспорные доказательства – путь к упрощенному судопроизводству

В Казахстане введен институт упрощенного (письменного) судопроизводства, который позволяет повысить доступность правосудия и сократить сроки рассмотрения дел.
mark_iceberg
20 нояб. 2017 / 15:49
  • 15361
  • 3
«Почему я не хочу встречаться с мужчинами-казахами»

«Почему я не хочу встречаться с мужчинами-казахами»

Заранее отпишусь, данный пост не является попыткой оскорбить собственную нацию) Как говорится о вкусах не спорят, каждому свое.
Bonittta
16 нояб. 2017 / 14:28
  • 16701
  • 372
Новшества на орбите уголовного правосудия

Новшества на орбите уголовного правосудия

Недавно я приняла участие в международной конференции по модернизации уголовного процесса, прошедшей в Бурабае. В чем значимость данных реформ для обычного казахстанца?
mirabeisenova
20 нояб. 2017 / 16:22
  • 12202
  • 3
Почему катастрофический отток интеллектуальной элиты не тревожит Астану?

Почему катастрофический отток интеллектуальной элиты не тревожит Астану?

Как сообщает телеканал КТК, только за последние девять месяцев Казахстан покинули 28200 человек, из них почти пять тысяч инженеров, около 2700 экономистов и 1700 учителей.
openqazaqstan
17 нояб. 2017 / 11:00
  • 11939
  • 59
Задержан казахстанец, продававший детей в сексуальное рабство в ОАЭ и Бахрейн

Задержан казахстанец, продававший детей в сексуальное рабство в ОАЭ и Бахрейн

Подтверждаются худшие предположения, циркулирующие в соцсетях. Периодические исчезновения детей в разных регионах Казахстана объясняются не только семейными проблемами и «синими китами».
openqazaqstan
16 нояб. 2017 / 15:46
  • 8351
  • 57
О «топ-30», «топ-50» и прочих понтах можно пока забыть

О «топ-30», «топ-50» и прочих понтах можно пока забыть

В объективности выводов швейцарского банка Credit Suisse усомниться трудно – его экономические рейтинги относятся к самым авторитетным и их явно трудно упрекнуть в предвзятости
openqazaqstan
18 нояб. 2017 / 17:21
  • 7686
  • 87
Атамбаев под занавес президентства сделал всё, чтобы сжечь мосты

Атамбаев под занавес президентства сделал всё, чтобы сжечь мосты

На своей итоговой пресс-конференции в понедельник уходящий кыргызский президент говорил не об итогах своей деятельности, а о «плохом» Казахстане.
openqazaqstan
21 нояб. 2017 / 18:36
«Смех сквозь слезы», или 7 причин не любить Алматы

«Смех сквозь слезы», или 7 причин не любить Алматы

Жизнь в Алматы не всегда сладкая, как сахарная вата и мультики субботним утром. В этой ироничной статье автор блога «Almaty — My First Love» расскажет о семи причинах не любить Алматы.
AlmatyMyLove
20 нояб. 2017 / 13:12
  • 2554
  • 70