Включение и отключение кнопок навигации для ChromiumWebBrowser - PullRequest
1 голос
/ 03 апреля 2019

У меня есть следующие кнопки для навигации в представлении браузера:

<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));
            }
        });
    }
}

. Я сделал следующие шаги:

  1. После начальной загрузки и CanGoForward, иCanGoBack return false, что правильно, потому что в истории есть только запись.
  2. Если я нажму на ссылку в браузере, метод будет вызван снова.На этот раз CanGoForward и CanGoBack снова оба возвращают false, что немного смущает меня, потому что была загружена новая страница.
  3. Если я нажимаю кнопку BtnBack, браузер возвращается кПервая страница и метод будет вызван.Теперь CanGoBack равно true, а CanGoForward равно false, что, по-видимому, является правильными значениями для второго шага.

Поскольку всегда имеются значения из этого шага, ранее доступные,Я предполагаю, что событие поднято / метод вызывается до добавления новой записи истории.Во время отладки моего кода метод будет вызван до того, как новая страница будет отображена в браузере, что подтверждает мое предположение.

Таким образом, вопрос в том, существует ли альтернативное событие, которое вызывается после успешной загрузки страницы вбраузер?Я не смог найти подходящий метод с помощью intellisense или в документации.

...