c# - 使用 Caliburn Micro 将 WebView2 绑定(bind)到 ViewModel

标签 c# wpf mvvm caliburn.micro webview2

我正在使用找到她的指南作为引用: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/

相关文章:

c# - 虚拟路径提供程序禁用缓存?

c# - 如何在代码隐藏 C# 中将 href 分配给 anchor 标记

C#:WPF 数据网格和 xml 文件

wpf - 将 WPF ListBox SelectedItem 绑定(bind)到列表

wpf - WPF 的复合指南 : MVVM vs MVP

C# 将数据导出到 Excel 时格式化列

c# - 在 C# 中对包含子项的列表进行排序

wpf - MVVM/WPF 应用 RadGridView 绑定(bind)到 EntityFrameworkDataSource

c# - 如何找出我的依赖属性已更改?

wpf - 在 Josh Smith 的文章之后,在 MVVM 的 ListView 中添加 ComboBox