我在我的项目中使用CefSharp WPF控件与MVVM模式.我曾try 在Chromium浏览器中显示外部URL.我使用了LoadingStateChanged事件来跟踪Chromium浏览器中的页面加载事件.我在侦听LoadingStateChanged事件时收到以下错误消息.你能帮我解决这个问题吗?
Error Message:个
调用线程无法访问此对象,因为 斯莱德拥有它.
HomeControl.xaml:个
<wpf:ChromiumWebBrowser WebBrowser="{Binding WebBrowser, Mode=OneWayToSource}" Address="{Binding Address, Mode=OneWay}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="LoadingStateChanged">
<i:InvokeCommandAction Command="{Binding Path=LoadingStateChangedCmd, Mode=OneWay}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</wpf:ChromiumWebBrowser>
HomeViewModel.cs:个
public ICommand LoadingStateChangedCmd { get; set; }
public HomeViewModel()
{
LoadingStateChangedCmd = new CommunityToolkitInput.RelayCommand<LoadingStateChangedEventArgs>(LoadingStateChanged);
}
public void LoadingStateChanged(LoadingStateChangedEventArgs args)
{
if (args.IsLoading == false)
{
Dispatcher.CurrentDispatcher.Invoke(() =>
{
});
}
}
Detailed Error Message:个
System.InvalidOperationException HResult=0x80131509消息= 调用线程无法访问此对象,因为另一个线程 拥有它.来源=WindowsBase堆栈跟踪:位于 System.Windows.Threading.Dispatcher.VerifyAccess()位于 System.Windows.DependencyObject.GetValue(DependencyProperty DP)位于 System.Windows.Interactivity.TriggerBase.get_Actions()位于 System.Windows.Interactivity.TriggerBase.InvokeActions(Object 参数)位于 System.Windows.Interactivity.EventTriggerBase.OnEvent(EventArgs 事件参数)在 System.Windows.Interactivity.EventTriggerBase.OnEventImpl(Object 发送者,EventArgs EventArgs) CefSharp.Wpf.ChromiumWebBrowser.CefSharp.Internals.IWebBrowserInternal.SetLoadingStateChange(LoadingStateChangedEventArgs Args)位于 CefSharp.Internals.ClientAdapter.OnLoadingStateChange(ClientAdapter*, Scope_refptr*浏览器,布尔值isLoding,布尔值 CanGoBack,Boolean canGoForward)