我有以下按钮可帮助在浏览器视图中导航:
<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/FaBack
和BtnForward/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));
}
});
}
}
我已完成以下步骤:
CanGoForward
和CanGoBack
都返回false
,这是正确的,因为历史记录中只有条目。CanGoForward
和CanGoBack
再次返回false
,这使我有些困惑,因为已加载了新页面。BtnBack
,则浏览器将导航回到第一页,并将调用该方法。现在CanGoBack
是true
,而CanGoForward
是false
,这似乎是第二步的正确值。因为在可用之前,总是存在来自步骤的值,所以我认为该事件已引发/在添加新历史记录条目之前调用了该方法。在调试我的代码时,将在新页面呈现给浏览器之前调用该方法,这证实了我的假设。
问题是,是否存在在浏览器中成功加载页面后调用的替代事件?我无法通过智能感知或在文档中找到合适的方法。