[英]toggle button visibility not working
我有一個使用簡單的向前和向后導航方案的網絡瀏覽器,如果用戶選擇,也可以刷新或停止導航。 所有導航都正常工作,但當我嘗試根據網絡瀏覽器是正在導航還是已導航來切換“刷新”和“停止”按鈕時,我的問題就出現了。 只要沒有導航發生,我希望將刷新按鈕設置為可見,並且在導航發生時將停止按鈕設置為可見。 我的基本實現如下,但我似乎無法根據這些情況讓按鈕從可見切換到折疊。
主頁.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 的網絡瀏覽器用戶控件。 調試時,我可以看到 bool 變量 _IsNavigating 在 true 和 false 之間的變化,如上所示,但在 MainPage.xaml.cs 中未檢測到此變化,這就是我認為按鈕可見性不會改變的原因。 對此問題的任何幫助將不勝感激。我已經沒有解決這個問題的想法了。 提前致謝。
設置可見性的代碼在錯誤的地方,現在只在頁面構建時調用。
只要_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();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.