Размещение и взаимодействие с веб-страницей в приложении WPF - PullRequest
20 голосов
/ 22 января 2009

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

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

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

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

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

Спасибо!

Ответы [ 2 ]

36 голосов
/ 22 января 2009

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

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

И в коде позади вы должны установить Uri для вашей страницы и объект (который должен быть видимым), который должен вызываться из сценария Java:

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>
13 голосов
/ 22 января 2009

о, и вы должны добавить сохранено из URL = (0014) about: интернет-комментарий над тегом head, чтобы IE не блокировал JavaScript

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...