2012-04-04 84 views
0

我有一個webbrowser使用簡單的向前和向後的導航方案,並且如果用戶如此選擇,也可以刷新或停止導航。所有的導航工作正常,但是當我嘗試切換「刷新」和「停止」按鈕時,根據瀏覽器是瀏覽瀏覽還是導航,我的問題就會出現。只要沒有導航出現,我想要將刷新按鈕設置爲可見,並且在導航出現時將停止按鈕設置爲可見。我的基本實現如下,但我似乎無法使按鈕從「可見」切換到「摺疊」,具體取決於這些場景。開關按鈕能見度不工作

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是web瀏覽器的用戶控制其嵌入到MainPage.xaml中並命名爲TheBrowser。在調試時,我可以看到上面顯示的布爾變量_IsNavigating在true和false之間的變化,但是在MainPage.xaml.cs中沒有檢測到這種變化,這就是爲什麼我認爲按鈕可見性沒有改變。任何有關這個問題的幫助將不勝感激..我已經用完了如何解決這個問題的想法!提前致謝。

回答

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(); 
} 
+0

謝謝你,唯一的問題是我的導航事件和WebBrowser控件是在我從我的主要項目引用中的MainPage,所以我無法控制按鈕可視性一個單獨的用戶控件類來自WebBrowser.xaml.cs的MainPage.xaml.cs。我試圖從MainPage.xaml.cs中檢查WebBrowser.xaml.cs以查看是否_IsNavigating = true,然後相應地在MainPage.xaml.cs中更改按鈕可見性,但這不起作用。有任何想法嗎? – Matthew 2012-04-04 23:31:57

+0

是使用mvvm:https://en.wikipedia.org/wiki/Model_View_ViewModel – thumbmunkeys 2012-04-04 23:47:32