Хостинг и взаимодействие с веб-страницей в приложении WPF
Мне нужно создать инструмент Dashboard для веб-приложений для приложения LOB. По существу пользователи должны иметь возможность входа на веб-сайт, который позволит им просматривать статистику для различных битов данных, а также просматривать любые уведомления, относящиеся к ним. Наше основное приложение создано для рабочего стола с использованием WPF. Нам также необходимо предоставить идентичную панель мониторинга, которая будет размещаться в нашем приложении WPF. Основное отличие состоит в том, что в версии WPF у них будут кнопки, которые откроют другие части приложения для внесения изменений в данные или выполнения любых действий.
Основная проблема заключается в том, что администратор хочет написать только одну версию, которая может использоваться как в Интернете, так и в оболочке WPF. Они не хотят писать в другую версию пользовательского интерфейса. Таким образом, решение состоит в том, чтобы написать панель мониторинга для Интернета, но разместить ее внутри нашего настольного приложения для локальных пользователей и в браузере для удаленных пользователей.
Итак, вот мои вопросы:
- Как мне сделать хостинг веб-страницы в моем приложении WPF.
- Как я могу скрыть/удалить кнопки, основываясь на том, находится ли я внутри своего WPF-приложения и что-то вроде IE explorer?
- Если в браузере щелкнули ссылки или кнопки, как приложение WPF сможет реагировать на эти клики и открыть соответствующий экран внутри приложения?
- Какой лучший подход?
Я понимаю, что эта идея, вероятно, плохая, поэтому не плачьте за нее. Я просто пытаюсь снабдить руководство правильным подходом. Все предложения приветствуются.
Спасибо!
Ответы
Ответ 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>
Ответ 2
o, и вы должны добавить
сохранен с url = (0014) о: комментарий в Интернете
над тегом заголовка, чтобы IE не блокировал javascript