0

シンプルな前後のナビゲーション スキームを使用する Web ブラウザーがあり、ユーザーが選択した場合は、ナビゲーションを更新または停止することもできます。すべてのナビゲーションは正しく機能していますが、Web ブラウザがナビゲート中かナビゲート済みかに応じて「更新」ボタンと「停止」ボタンを切り替えようとすると問題が発生します。ナビゲーションが発生していない限り、更新ボタンを表示に設定し、ナビゲーションが発生している間は停止ボタンを表示に設定したいと思います。私の基本的な実装は次のとおりですが、これらのシナリオによっては、ボタンを Visible から Collapsed に切り替えることができないようです。

MainPage.xaml

<Button x:Name="RefreshButton" Content="" Style="{StaticResource RefreshBtn}" Grid.Column="0" Grid.Row="0" Visibility="Visible" Click="RefreshButton_Click" toolkit:TiltEffect.IsTiltEnabled="True">
<Button x:Name="StopButton" Content="" Style="{StaticResource StopBtn}" Grid.Column="0" Grid.Row="0" Visibility="Collapsed" Click="StopButton_Click" toolkit:TiltEffect.IsTiltEnabled="True"/>

MainPage.xaml.cs

public MainPage()
    {
        InitializeComponent();

        //Change Navigation buttons if the browser is currently Navigating
        if (TheBrowser._IsNavigating == false)
        {
            RefreshButton.Visibility = Visibility.Visible;
            StopButton.Visibility = Visibility.Collapsed;
        }
        else
        {
            RefreshButton.Visibility = Visibility.Collapsed;
            StopButton.Visibility = Visibility.Visible;
        }
        //while (TheBrowser._IsNavigating == true)
        //{
        //    RefreshButton.Visibility = Visibility.Collapsed;
        //    StopButton.Visibility = Visibility.Visible;
        //}
    }

WebBrowser.xaml.cs

//Flag to check if the browser is navigating
    public bool _IsNavigating = false;

void TheWebBrowser_Navigating(object sender,
        Microsoft.Phone.Controls.NavigatingEventArgs e)
    {
        _IsNavigating = true;
    }

    void TheWebBrowser_Navigated(object sender,
        System.Windows.Navigation.NavigationEventArgs e)
    {
        _IsNavigating = false;
    }

私の WebBrowser.xaml.cs は、MainPage.xaml に埋め込まれ、TheBrowser という名前の Web ブラウザー ユーザー コントロールです。デバッグ時に、上記のように bool 変数 _IsNavigating の true と false の間の変更を確認できますが、この変更は MainPage.xaml.cs で検出されないため、ボタンの表示が変更されないと思います。この問題の助けをいただければ幸いです..これを修正する方法のアイデアが不足しています! 前もって感謝します。

4

1 に答える 1

1

可視性を設定するためのコードが間違った場所にあり、現在はページの構築時にのみ呼び出されます。

_isNavigating変数が変更されるたびにコードを呼び出す必要があります。

以下をせよ:

 void ChangeVisibility()
 {
    if (TheBrowser._IsNavigating == false)
    {
        RefreshButton.Visibility = Visibility.Visible;
        StopButton.Visibility = Visibility.Collapsed;
    }
    else
    {
        RefreshButton.Visibility = Visibility.Collapsed;
        StopButton.Visibility = Visibility.Visible;
    }
  }

void TheWebBrowser_Navigating(object sender,
    Microsoft.Phone.Controls.NavigatingEventArgs e)
{
    _IsNavigating = true;
    ChangeVisibility();
}

void TheWebBrowser_Navigated(object sender,
    System.Windows.Navigation.NavigationEventArgs e)
{
    _IsNavigating = false;
    ChangeVisibility();
}
于 2012-04-04T21:40:52.970 に答える