我有一个使用简单的前进和后退导航方案的webbrowser,如果用户如此选择,也可以刷新或停止导航。所有导航都正常工作,但当我尝试切换“刷新”时,我的问题就出现了。并且'停止'按钮取决于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是一个webbrowser用户控件,它嵌入到MainPage.xaml中并命名为TheBrowser。在调试时,我可以看到bool变量_IsNavigating在true和false之间的变化如上所示,但是在MainPage.xaml.cs中没有检测到这种变化,这就是我认为按钮可见性不会改变的原因。任何有关这个问题的帮助将不胜感激..我已经用尽了如何解决这个问题的想法!提前谢谢。
答案 0 :(得分: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();
}