#realJSOP Ответов: 2

Содержимое окна масштабирования Wpf


VS2017, .Net 4.61

Я пишу приложение, которое содержит два WebBrowser управления. Каждый элемент управления WebBRowser указывает на один и тот же сайт, но на разных серверах (пара pi-hole DNS-серверов).

Я хочу масштабировать содержимое всего окна, чтобы оно соответствовало размеру окна. Я пробовал петь а Viewbox и RenderTransform, но ... WebBrowser элемент управления игнорирует масштабирование и по-прежнему сообщает размер элемента управления веб-сайту (который, кстати, включен для мобильных устройств).

Что я уже пробовал:

0) положить WebBrowser в ViewBox контейнер с Stretch="Fill"

1) Установка RenderTransform для WebBrowser контроль

2) Установка RenderTransform для родителей Grid контроль

2 Ответов

Рейтинг:
2

#realJSOP

Я уже нашел это. :(

Обсуждаемое там решение жизнеспособно только для win8 и выше.

Я также рассматривал использование приложения winforms и взаимодействия winforms, но управление веб-браузером winforms невозможно, потому что addeventlistener не поддерживается.

Я думаю, что мне просто придется иметь дело с неспособностью масштабировать элемент управления веб-браузером.

Graeme_Grant

Да, я нашел нечто подобное ... Веб-браузер WPF на самом деле является тем же самым, который используется с WinForms. Вы уже посмотрели на него CefSharp - быстрый веб-браузер для приложений WinForms и WPF[^]?

#realJSOP

Я не думаю, что это одно и то же. Версия WPF работает нормально, но версия WinForms жалуется на функцию javascript "addEventListener". Я знаю, что такое CEF, но еще не пробовал.

Graeme_Grant

для Winforms вы используете прокладку, для WPF-нет ... может быть, поэтому... Я также читал это где-то от одного из разработчиков MS... не могу вспомнить где ...

Richard Deeming

Грэм прав - элемент управления WPF представляет собой тонкую оболочку вокруг элемента управления ActiveX, поэтому он не уважает преобразования WPF.
Исходный код[^]

Он также будет застрять в режиме IE7 по умолчанию, если только вы не измените реестр на каждом компьютере, где работает ваше приложение[^].

#realJSOP

Я уже сделал взлом реестра, но это не решило ошибку javascript, которую я получаю, но версия wpf в этом отношении хороша.

Я пытаюсь заставить библиотеку CEF работать, но все, что я получаю до сих пор, - это пустое черное окно.

Graeme_Grant

Я не использовал CEF lib, так что я не могу помочь, не изучив его...

Примечание: Microsoft знает, что элемент управления нуждается в обновлении, но Требуемая версия фреймворка не подходит: Принести современные WebView для вашего .Чистая WinForms и WPF приложений - Microsoft край Дев BlogMicrosoft края блоге разработчиков.[^]

#realJSOP

Похоже, что он не работает на Win7 (вероятно, потому, что это Edge, а не IE). :/

Richard Deeming

Это странно - все, что я видел, говорит о том, что довольно трудно подавить ошибки скрипта в версии WPF, так как они удалили SuppressScriptErrors свойство из версии WinForms.

Возможно, вы сделали взлом реестра только для версии WPF, а не для версии WinForms? Или, может быть, это была 32-битная / 64-битная проблема?

#realJSOP

Я никогда не видел никаких признаков того, что reg-Хак должен быть сделан для каждой платформы.

Richard Deeming

Это зависит от того, добавляете ли вы ключ в HKCU или HKLM:

https://blogs.msdn.microsoft.com/patricka/2015/01/12/controlling-webbrowser-control-compatibility/[^]
Если вы добавляете в текущий пользователь HKCU hive, вам не нужно беспокоиться о “битности” вашей ОС или приложения. Однако если вы добавляете ключ в улей локальной машины, вам это необходимо ... добавьте ключ в правильное расположение реестра на 64-разрядной машине Windows. В 64-разрядной ОС 32-разрядные приложения выполняются в подсистеме WOW64. Для 32-разрядных приложений WOW64 перенаправляет вызовы реестра в отдельное место для определенных ключей. То FEATURE_BROWSER_EMULATION ключ перенаправляется. Поэтому в 64-разрядной ОС значение 32-разрядного приложения должно быть помещено в HKLM\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION.

#realJSOP

кто, черт возьми,главный в Редмонде? Бивис или Батхед?

Richard Deeming

Или возможно Афромен[^]. :)

Рейтинг:
1

Gerry Schmitz

Он "масштабирует" то, что может:

<Window x:Class="WpfApp3.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApp3"
        mc:Ignorable="d"
        Title="MainWindow"
        WindowStartupLocation="CenterScreen"
        Height="450"
        Width="800">
   <Grid>
      <Grid.ColumnDefinitions>
         <ColumnDefinition Width="*" />
         <ColumnDefinition Width="*" />
      </Grid.ColumnDefinitions>

      <WebBrowser Source="http://msdn.com" />
      <WebBrowser Grid.Column="1"
                  Source="http://msdn.com" />
   </Grid>
</Window>


#realJSOP

Я не понимаю, что вы пытаетесь проиллюстрировать. То, что вы опубликовали, - это в значительной степени то, что у меня уже есть.