2009-02-23 12 views
3

Im писать приложения в WPF, используя MVVM шаблон, где Im ограниченной привязки к свойствам и команд exclusivleyModel View ViewModel в WPF с WebBrowser

Однако, я хочу использовать элемент управления WebBrowser, который может только взять HTML-строку для содержимого как параметра для mthod, а не для свойства.

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

Можно ли каким-либо образом направить параметр (строку) в метод с MVVM, не прибегая к коду в файлах с кодом (который является большим нет-нет).

Благодаря

Дин

ответ

5

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

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

Если вы настроили свой пользовательский интерфейс, чтобы включить типичную кнопку «Адресная строка + Перейти», вы захотите использовать обработчик Click Buttons, чтобы передать строку в браузер. Альтернативно, строка может быть свойством ViewModel, и вы можете легко ее собрать, привязывая ее к свойству Tag WebBrowser.

Ваш UI появится примерно так:

<TextBox x:Name="addressBar" /> <!-- If you use the address bar --> 
<Button Content="Go" Click="NavigateButton_Click" /> 
<WebBrowser x:Name="browser" Tag="{Binding URL}" /> <!-- If you bind to a VM property --> 

Ваш код фоновым может выглядеть следующим образом:

void NavigateButton_Click(object sender, RoutedEventArgs e) 
{ 
    browser.Navigate(new Uri(addressBar.Text)); // Address Bar 
    browser.Navigate(new Uri(browser.Tag.ToString()); // Tag Binding 
} 
15

Почему какой-либо код в файлах с кодом отсутствует no go? Я считаю, что это одно из самых известных недоразумений в сообществе MVVM.

MVVM не является образцом для устранения кода позади. Это отделить часть представления (внешний вид, анимацию и т. Д.) От логической части (рабочий процесс). Кроме того, вы можете тестировать логическую часть.

Я знаю достаточно сценариев, где вам нужно написать код, потому что привязка данных не является решением всего. Примеры приложений, использующих код позади, и по-прежнему выполнять разделение MVVM можно найти здесь:

WPF Application Framework (WAF)

 Смежные вопросы

  • Нет связанных вопросов^_^