如何在WPF页面中隐藏/显示按钮?

时间:2017-11-06 09:22:37

标签: c# wpf slider

我在WPF中有一个滑块菜单,我有2个按钮用于显示和隐藏它。在MainWindow中显示的菜单意味着它在所有页面中都可见但我需要隐藏某些页面中的按钮,如登录页面。是我的滑块菜单后面的代码:

  private void BtnTopMenuHide_Click(object sender, RoutedEventArgs e)
    {
        ShowHideMenu("sbHideTopMenu", btnTopMenuHide, btnTopMenuShow, pnlTopMenu);
    }



    private void BtnTopMenuShow_Click(object sender, RoutedEventArgs e)
    {
        ShowHideMenu("sbShowTopMenu", btnTopMenuHide, btnTopMenuShow, pnlTopMenu);
    }

    private void ShowHideMenu(string Storyboard, Button btnHide, Button btnShow, StackPanel pnl)
    {
        Storyboard sb = Resources[Storyboard] as Storyboard;
        sb.Begin(pnl);

        if (Storyboard.Contains("Show"))
        {
            btnHide.Visibility = Visibility.Visible;
            btnShow.Visibility = Visibility.Hidden;
        }
        else if (Storyboard.Contains("Hide"))
        {
            btnShow.Visibility = Visibility.Visible;
            btnHide.Visibility = Visibility.Hidden;
        }

    }

例如,我有一个注销方法

 private void LogOut_Click(object sender, RoutedEventArgs e)
    {
        string SessionFile = @"C:\somefile\CFG\session.dat";
        File.Delete(SessionFile);
        MainFrame.Navigate(new Uri("Pages/LoginPage.xaml", UriKind.Relative));
        ShowHideMenu("sbHideTopMenu", btnTopMenuHide, btnTopMenuShow, pnlTopMenu);
        btnTopMenuHide.Visibility = Visibility.Hidden;
        btnTopMenuShow.Visibility = Visibility.Hidden;
    }

当我点击退出按钮时,它是隐藏按钮,我也有这样的登录成功方法:

 MainWindow _main = new MainWindow();

    private void Page_Loaded(object sender, RoutedEventArgs e)
    {
        IsConnected.CheckConnection();
        if (loginService.SessionData().Success() && loginService.SessionData().NotExpired())
        {
            _main.btnTopMenuHide.Visibility = Visibility.Visible;
            _main.btnTopMenuShow.Visibility = Visibility.Visible;
            NavigationService.Navigate(new Uri("Pages/PaymentPage.xaml", UriKind.Relative));
        }
    }

在这个方法中,如果登录成功它导航页面但是当我尝试从MainWindow创建一个对象时它也没有显示按钮它正在创建但是如果我关闭应用程序它仍然在运行后台,因为对象如何我解决这个问题或任何想要隐藏这个按钮的不同方法吗?我希望我能解释一下,谢谢你。

1 个答案:

答案 0 :(得分:0)

我们无法创建像

这样的对象
  

MainWindow _main = new MainWindow();

从MainWindow.This代码创建一个新窗口,但我不需要新的MainWindow.I需要创建一个对象形式当前窗口。所以我们应该从 Current MainWindow <创建一个对象/ em> 喜欢

  

MainWindow wnd = (MainWindow)Application.Current.MainWindow;

然后我们可以使用

  

wnd.btnTopMenuHide.Visibility = Visibility.Visible;

。这就是它。这对我有用,我希望能帮助其他人!

 的更新 例如 ; 假设我们有一棵树(MainWindow),这棵树有一个分支,我们需要访问这个分支。我们如何访问分支? 我们应该种植一个新树(A New MainWindow)或者我们应该从当前树中访问分支?当然我们可以从当前树访问。谁可以访问不属于它的分支?
没有人 为什么要创建另一个MainWindow来访问已经在我的MainWindow中的对象? 这个例子解释了我在项目中所做的事情。谢谢你