首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CefSharp WPF和MVVM?

CefSharp WPF和MVVM?
EN

Stack Overflow用户
提问于 2013-07-01 17:30:53
回答 2查看 5.7K关注 0票数 4

我正在使用WPF的CefSharp。我想在MVVM架构中使用它。不幸的是,有一个问题。在视图中,我有:

代码语言:javascript
复制
<ContentPresenter Content="{Binding Browser}"
                  HorizontalAlignment="Center"
                  VerticalAlignment="Center"/>

在ViewModel中,我在Browser中添加了一个新对象

代码语言:javascript
复制
var settings = new CefSharp.Settings
{
    PackLoadingDisabled = true,
}
if (CefSharp.CEF.Initialize(settings))
{
    int counter = 0;
    this.Browser = new WebView();
}

不幸的是,在那之后的任何时候我都不能加载任何URL。它显示Browser not initialized,实际上IsBrowserInitialized属性(在Browser中)是false

这很奇怪,因为在测试应用中,而不是在MVVM中,我使用相同的代码来实例化WebView,它可以工作。唯一不同的是,我以编程方式将浏览器添加到网格中,因为它不是MVVM。

有没有人在WPF MVVM应用中得到了CefSharp?有什么想法吗?

谢谢

编辑:我注意到在测试非MVVM应用程序时,IsBrowserInitialized属性被设置为false,直到窗口构造函数结束作业。

EN

回答 2

Stack Overflow用户

发布于 2013-10-27 02:58:37

不幸的是,CefSharp版本1目前并不能很好地适用于MVVM。幸运的是,在Mvv3中,我试图让它更“感知CefSharp”,这样你就不需要做很多修改了。看看那里的CefSharp.Wpf.Example code,你会(希望)明白我的意思。

让它在CefSharp版本1.xx中工作的方法是设置一个PropertyChanged事件处理程序。一旦IsBrowserInitialized属性设置为true,您就可以开始工作了。如下所示:

代码语言:javascript
复制
    webView.PropertyChanged += OnWebViewPropertyChanged;

    // ...

    private void OnWebViewPropertyChanged(object sender, PropertyChangedEventArgs e)
    {
        switch (e.PropertyName)
        {
            case "IsBrowserInitialized":
                if (webView.IsBrowserInitialized)
                {
                    webView.Load("http://some/url");
                }
                break;
        }
    }
票数 8
EN

Stack Overflow用户

发布于 2021-04-16 16:40:25

我很欣赏这是一个古老的问题,可能会在其他地方得到答案,但考虑到google可能会把你送到这里的简洁标题(它对我来说就是这样!)

底层的ChromiumWebBrowser对虚拟机非常友好。

  • 在xaml中创建控件,以便在其他控件中作为源/目标进行绑定。例如,bind back按钮。
  • ,并可选择在视图模型(也称为MVVM)中创建控件。例如,更复杂的浏览器管理,如调用js、挂钩事件等。

示例..

代码语言:javascript
复制
<cefSharp:ChromiumWebBrowser name="browser" WebBrowser="{Binding WebBrowser, Mode=OneWayToSource}"
 Address="{Binding Address, Mode=TwoWay}"
 RenderOptions.BitmapScalingMode="{Binding ElementName=scalingModeComboBox, Path=SelectedItem}" />
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17401221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档