启用和禁用ChromiumWebBrowser的导航按钮

时间:2019-04-03 06:54:13

标签: c# cefsharp chromium-embedded

我有以下按钮可帮助在浏览器视图中导航:

<Button ToolTip="{StaticResource Back}" x:Name="BtnBack" Style="{StaticResource FaButton}" dx:ThemeManager.ThemeName="None" Click="BtnBack_Click">
    <fa:FontAwesome Style="{StaticResource FaIcon}" Name="FaBack" Icon="ArrowLeft" HorizontalAlignment="Center" />
</Button>
<Button ToolTip="{StaticResource Forward}" x:Name="BtnForward" Style="{StaticResource FaButton}" dx:ThemeManager.ThemeName="None" Click="BtnForward_Click">
    <fa:FontAwesome Style="{StaticResource FaIcon}" Name="FaForward" Icon="ArrowRight" HorizontalAlignment="Center" />
</Button>
<Button ToolTip="{StaticResource BackToMenu}" x:Name="BtnHome" Style="{StaticResource FaButton}" dx:ThemeManager.ThemeName="None" Click="BtnHome_Click">
    <fa:FontAwesome Style="{StaticResource FaIcon}" Icon="Home" HorizontalAlignment="Center" />
</Button>

我想根据是否可以向前/向后导航来更改按钮BtnBack/FaBackBtnForward/FaForward的颜色。因此,我使用绑定到LoadingStateChangedEvent的以下方法:

private void CwbBrowser_LoadingStateChanged(object sender, CefSharp.LoadingStateChangedEventArgs args) {
    if (!args.IsLoading) {
        Application.Current.Dispatcher.BeginInvoke((Action)delegate {
            if (!CwbBrowser.CanGoBack) {
                FaBack.Foreground = new SolidColorBrush(Color.FromArgb(50, 25, 25, 25));
            } else {
                FaBack.Foreground = new SolidColorBrush(Color.FromArgb(255, 68, 68, 68));
            }
            if (!CwbBrowser.CanGoForward) {
                FaForward.Foreground = new SolidColorBrush(Color.FromArgb(50, 25, 25, 25));
            } else {
                FaForward.Foreground = new SolidColorBrush(Color.FromArgb(255, 68, 68, 68));
            }
        });
    }
}

我已完成以下步骤:

  1. 在初始加载之后,CanGoForwardCanGoBack都返回false,这是正确的,因为历史记录中只有条目。
  2. 如果我要单击浏览器中的链接,则将再次调用该方法。这次CanGoForwardCanGoBack再次返回false,这使我有些困惑,因为已加载了新页面。
  3. 如果我随后单击按钮BtnBack,则浏览器将导航回到第一页,并将调用该方法。现在CanGoBacktrue,而CanGoForwardfalse,这似乎是第二步的正确值。

因为在可用之前,总是存在来自步骤的值,所以我认为该事件已引发/在添加新历史记录条目之前调用了该方法。在调试我的代码时,将在新页面呈现给浏览器之前调用该方法,这证实了我的假设。

问题是,是否存在在浏览器中成功加载页面后调用的替代事件?我无法通过智能感知或在文档中找到合适的方法。

0 个答案:

没有答案