Подтвердить что ты не робот

Хостинг и взаимодействие с веб-страницей в приложении WPF

Мне нужно создать инструмент Dashboard для веб-приложений для приложения LOB. По существу пользователи должны иметь возможность входа на веб-сайт, который позволит им просматривать статистику для различных битов данных, а также просматривать любые уведомления, относящиеся к ним. Наше основное приложение создано для рабочего стола с использованием WPF. Нам также необходимо предоставить идентичную панель мониторинга, которая будет размещаться в нашем приложении WPF. Основное отличие состоит в том, что в версии WPF у них будут кнопки, которые откроют другие части приложения для внесения изменений в данные или выполнения любых действий.

Основная проблема заключается в том, что администратор хочет написать только одну версию, которая может использоваться как в Интернете, так и в оболочке WPF. Они не хотят писать в другую версию пользовательского интерфейса. Таким образом, решение состоит в том, чтобы написать панель мониторинга для Интернета, но разместить ее внутри нашего настольного приложения для локальных пользователей и в браузере для удаленных пользователей.

Итак, вот мои вопросы:

  • Как мне сделать хостинг веб-страницы в моем приложении WPF.
  • Как я могу скрыть/удалить кнопки, основываясь на том, находится ли я внутри своего WPF-приложения и что-то вроде IE explorer?
  • Если в браузере щелкнули ссылки или кнопки, как приложение WPF сможет реагировать на эти клики и открыть соответствующий экран внутри приложения?
  • Какой лучший подход?

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

Спасибо!

4b9b3361

Ответ 1

Вы можете разместить веб-страницу в приложении WPF с помощью элементов управления WebBrowser, добавленных в .NET 3.5 SP1:

<Grid>
    <WebBrowser Name="browser" />
</Grid>

И в кодировке вы должны установить Uri на свою страницу и объект (который должен быть com-visible), который должен вызываться из java script:

public partial class Window1 : Window
{
    public Window1()
    {
        InitializeComponent();

        string uri = AppDomain.CurrentDomain.BaseDirectory + "TestPage.html";
        this.browser.Navigate(new Uri(uri, UriKind.Absolute));
        this.browser.ObjectForScripting = new ScriptingHelper();
    }

    [ComVisible(true)]
    public class ScriptingHelper
    {
        public void ShowMessage(string message)
        {
            MessageBox.Show(message);
        }
    }
}

И, наконец, на вашей странице вы должны вызвать код, используя window.external, как показано ниже:

<head>
    <title></title>

    <script type="text/javascript">
        function OnClick()
        {
            var message = "Hello!";
            window.external.ShowMessage(message);
        }
    </script>
</head>
<body>
    <a href="#" onclick="OnClick()">Click me</a>
</body>