2012-04-04 87 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