Joe*_*Joe 4 c# wpf mvvm cefsharp
我正在使用CefSharp for WPF.我想在MVVM架构中使用它.不幸的是有一个问题.在视图中我有:
<ContentPresenter Content="{Binding Browser}"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
Run Code Online (Sandbox Code Playgroud)
在ViewModel中,我将一个新对象放入Browser:
var settings = new CefSharp.Settings
{
PackLoadingDisabled = true,
}
if (CefSharp.CEF.Initialize(settings))
{
int counter = 0;
this.Browser = new WebView();
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,之后我无法加载任何URL.它说Browser not initialized,实际上IsBrowserInitialized属性(in Browser)是false.
这很奇怪,因为在测试应用程序中,而不是MVVM,我使用相同的代码来实例化它的WebView.唯一的区别是我以编程方式将浏览器添加到网格,因为它不是MVVM.
有没有人在WPF MVVM应用程序中获得CefSharp?有任何想法吗?
谢谢
编辑:我在测试非MVVM应用程序中注意到,该IsBrowserInitialized属性设置为false,直到窗口构造函数结束作业.
不幸的是,CefSharp版本1目前还不太适合MVVM.幸运的是,在CefSharp 3中,我试图让它更具"MVVM感知",所以你不必做很多黑客攻击.请参阅那里的CefSharp.Wpf.Example代码,您将(希望)看到我的意思.
使用CefSharp版本1.xx的方法是设置PropertyChanged事件处理程序.一旦IsBrowserInitialized属性设置为true,您就可以开始工作了.像这样:
webView.PropertyChanged += OnWebViewPropertyChanged;
// ...
private void OnWebViewPropertyChanged(object sender, PropertyChangedEventArgs e)
{
switch (e.PropertyName)
{
case "IsBrowserInitialized":
if (webView.IsBrowserInitialized)
{
webView.Load("http://some/url");
}
break;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4672 次 |
| 最近记录: |