我正在使用找到她的指南作为引用:https://docs.microsoft.com/en-us/microsoft-edge/webview2/gettingstarted/wpf
利用该指南,我能够在我的应用程序中启动 WebView2。现在我正在尝试将代码分离到 ViewModel 中,因为该页面上将有更多元素。该应用程序作为一个整体使用 Caliburn Micro。除了 WebView2 本身,我能够将所有内容绑定(bind)到 ViewModel。当我选择 Go 按钮时,它表明 WebView 为空。我尝试手动设置 WebView 但这不起作用。
浏览器 View .xaml:
<Button
x:Name="ButtonGo"
Content="Go"
/>
<TextBox x:Name = "Addressbar"
/>
<wv2:WebView2 x:Name = "WebView"
Source="{Binding WebViewSource}"
/>
浏览器 View 模型.cs private WebView2 _webView;
public WebView2 WebView
{
get
{
return _webView;
}
set
{
_webView = value;
NotifyOfPropertyChange(() => WebView);
}
}
public string WebViewSource { get; set; } = "http://Google.com";
private string _addressbar;
public string Addressbar
{
get
{
return _addressbar;
}
set
{
_addressbar = value;
NotifyOfPropertyChange(() => Addressbar);
}
}
public void ButtonGo()
{
if (WebView != null && WebView.CoreWebView2 != null)
{
WebView.CoreWebView2.Navigate("https://bing.com");
}
}
无论我尝试什么,WebView 都会返回 null 并且我无法更改页面。
最佳答案
View 模型不应该保留对像 WebView2
这样的元素的引用。 .这不是 MVVM,也不是 Caliburn.Micro 的工作方式。 View 模型定义源属性。
如果添加 TextBlock
属性(你不应该!)到 View 模型,它也将始终是 null
就像你的 WebView2
属性是,即使您添加了 TextBlock
在 XAML 标记中具有相应的名称。
恐怕这没有多大意义,尤其是关于 MVVM 和 Caliburn.Micro。
关于c# - 使用 Caliburn Micro 将 WebView2 绑定(bind)到 ViewModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62728860/