[英]How to hide/show buttons in WPF pages?
我在 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 创建对象时,但如果我关闭应用程序,它仍在运行后台,因为对象我如何解决这个问题或任何ideo隐藏此按钮的不同方法? 我希望我解释了一切,谢谢。
我们不能创建一个对象
MainWindow _main = new MainWindow();
从 MainWindow.This 代码创建一个新窗口,但我不需要一个新的 MainWindow。我需要从当前窗口创建一个对象。所以我们应该从Current MainWindow创建一个对象,如
MainWindow wnd = (MainWindow)Application.Current.MainWindow;
然后我们可以使用像
wnd.btnTopMenuHide.Visibility = Visibility.Visible;
. 就是这样。这对我有用,希望对其他人有帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.