我不完全确定我理解这个问题(您想在 WebBrowser 上调用一个方法,但需要一个 html 字符串来执行此操作?)。
MVVM 并不是要避免像瘟疫那样的代码隐藏,而是将代码隐藏文件降级为严格的 UI 任务。
如果您将 UI 设置为包含一个典型的地址栏 + 转到按钮,您将需要使用按钮的 Click 处理程序将字符串传递给浏览器。或者,该字符串可以是 ViewModel 的一个属性,您可以通过将其绑定到 WebBrowser 的 Tag 属性来轻松收集它。
您的 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
}