【问题标题】:toggle button visibility not working切换按钮可见性不起作用
【发布时间】:2012-04-05 05:40:52
【问题描述】:

我有一个使用简单的向前和向后导航方案的网络浏览器,如果用户愿意,也可以刷新或停止导航。所有导航都正常工作,但是当我尝试切换“刷新”和“停止”按钮时,会出现我的问题,具体取决于网络浏览器是否正在导航或已导航。只要没有导航发生,我希望将刷新按钮设置为可见,并且在导航发生时将停止按钮设置为可见。我的基本实现如下,但根据这些场景,我似乎无法让按钮从可见切换到折叠。

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;
    }

My WebBrowser.xaml.cs 是嵌入到 MainPage.xaml 并命名为 TheBrowser 的 Web 浏览器用户控件。调试时,我可以看到 bool 变量 _IsNavigating 在 true 和 false 之间的变化,但在 MainPage.xaml.cs 中没有检测到这种变化,这就是我认为按钮可见性没有变化的原因。任何有关此问题的帮助将不胜感激。我已经没有如何解决这个问题的想法了!提前致谢。

【问题讨论】:

    标签: c# windows-phone-7 xaml


    【解决方案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();
    }
    

    【讨论】:

    • 谢谢,唯一的问题是我的导航事件和 webbrowser 控件位于一个单独的用户控件类中,我从 MainPage 的主项目中引用它,因此我无法控制 MainPage.xaml.cs 中的按钮可见性WebBrowser.xaml.cs。我试图从 MainPage.xaml.cs 检查 WebBrowser.xaml.cs 以查看 _IsNavigating = true 是否相应地更改 MainPage.xaml.cs 中的按钮可见性,但这不起作用。有什么想法吗?
    猜你喜欢
    • 2017-12-18
    • 1970-01-01
    • 2013-05-13
    • 2010-11-21
    • 2011-12-15
    • 1970-01-01
    • 2021-11-02
    • 2012-04-28
    • 1970-01-01
    相关资源
    最近更新 更多