место в рейтинге
  • 232780
  • 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
355

Загрузка...
Loading...

Комментарии

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

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

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

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

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

Юрист, пришедший в школу учителем по зову души, о главной проблеме системы образования

Юрист, пришедший в школу учителем по зову души, о главной проблеме системы образования

Алматинский учитель поставил диагноз системе, частью которой является образование. Будучи успешным юристом, имевший степень МВА, он вдруг развернул траекторию своей карьеры, став обычным учителем.
Zhumanova
22 сент. 2017 / 16:26
  • 8858
  • 17
«Это будут твои большие похороны». Гуф высказался о Скриптоните и Басте

«Это будут твои большие похороны». Гуф высказался о Скриптоните и Басте

Досталось и Скриптониту, который ранее опубликовал запись, о том, что больше не будет сниматься в клипе Гуфа и Тимати. "Я тебя ни о чем больше не попрошу, казах ты мой дорогой" - высказался рэпер.
tala03
21 сент. 2017 / 15:48
  • 4122
  • 12
Почему депутат Божко хочет ограничить приток сельской молодёжи в города?

Почему депутат Божко хочет ограничить приток сельской молодёжи в города?

Вице-спикер Мажилиса Владимир Божко остановился на некоторых деталях известного конфликта в Астане возле строящегося «Абу Даби Плаза», затронув проблему «многочисленной сельской молодёжи»...
openqazaqstan
19 сент. 2017 / 13:16
  • 2828
  • 64
«Моя депрессия длилась больше двух лет». История о том, как я была готова сдаться

«Моя депрессия длилась больше двух лет». История о том, как я была готова сдаться

По данным статистики 2017 года Казахстан занимает 4 место по самоубийствам. Говорить об этом - социальное табу. Мы игнорируем разговоры о депрессиях. Потому что нам страшно.
goribaldi
18 сент. 2017 / 15:45
  • 2802
  • 91
«Папина принцесса» или «обезьяна с гранатой»? Случай в бассейне

«Папина принцесса» или «обезьяна с гранатой»? Случай в бассейне

Мужчины спокойно подчиняются логичным правилам, большинство женщин пытаются выторговать себе особые условия. Я убеждалась в этом много раз.
ValentinaVladimirska
18 сент. 2017 / 14:25
  • 2259
  • 35
Лайфхаки для путешественников. Как я не заплатила ни цента за проживание в Испании

Лайфхаки для путешественников. Как я не заплатила ни цента за проживание в Испании

Бесплатное проживание и завтрак в Испании, как прокачать иностранный язык и где поймать бесплатные ништяки в Европе. Если вы backpacker, который пересекает границу разных стран каждую неделю -...
dianaobyrne
18 сент. 2017 / 12:16
  • 2829
  • 1
«Честный взгляд» госслужащего: «Знала бы, что ты такой гнилой, я бы тебя не брала»

«Честный взгляд» госслужащего: «Знала бы, что ты такой гнилой, я бы тебя не брала»

Мы не такие блатные. Да, нас унижают руководители, возомнившие себя ханами, часто наши права не реализуются в должной мере. И я всегда задавался, почему на самом деле нет нормальных условий и льгот...
WriterKz
23 сент. 2017 / 0:41
Мой опыт вегетарианства: «Я ела овощи, и сама стала как овощ»

Мой опыт вегетарианства: «Я ела овощи, и сама стала как овощ»

Три года назад начитавшись-наслушавшись кое-каких знаменитых людей, я решила завязать  с абсолютно любым мясом. Как же возмущались все мои близкие, это надо было видеть, но я была непреклонна.
Bonittta
18 сент. 2017 / 14:33
  • 2224
  • 33
Путешественник был шокирован полицейским беспределом в Казахстане

Путешественник был шокирован полицейским беспределом в Казахстане

Полицейский беспредел в Казахстане осудил российский блогер и путешественник Евгений Золотухин. На своей странице он рассказал, как встретился с казахстанскими полицейскими, и как они оставили не...
tala03
18 сент. 2017 / 16:58
  • 1985
  • 13