WPF中从Page回到Window的问题

wangmengdx 2017-12-16 12:43:52
Window上点击“注册”按钮进入Page;
请问点击“返回”按钮怎么回到最开始的Window窗体,不是弹出,就是无缝切换回去
...全文
500 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
JimCarter 2017-12-18
  • 打赏
  • 举报
回复
一楼正解 frame+page
zhuowp 2017-12-17
  • 打赏
  • 举报
回复
我个人觉得程序员有时候是需要把表面的业务逻辑和实际的程序实现分开来的。
以本帖的的业务为例,我觉得就不应该纠结于“返回”这个词而去采用Page来实现界面切换。

直接在窗口中加入一个Grid容器,动态的将登陆界面和返回界面加入到窗口中就可以了。



    /// <summary>
/// LoginView.xaml 的交互逻辑
/// </summary>
public partial class LoginView : UserControl
{
public Action GoToRegisterAction { get; set; }

public LoginView()
{
InitializeComponent();
}

private void btnGoToRegister_Click(object sender, RoutedEventArgs e)
{
if(GoToRegisterAction != null)
{
GoToRegisterAction();
}
}
}


 public partial class RegisterView : UserControl
{
public Action GoBackToLoginAction { get; set; }

public RegisterView()
{
InitializeComponent();
}

private void btnGoBackToLogin_Click(object sender, RoutedEventArgs e)
{
if(GoBackToLoginAction != null)
{
GoBackToLoginAction();
}
}
}


 public partial class MainWindow : Window
{
private LoginView _login = null;
private RegisterView _register = null;

public LoginView Login
{
get
{
if (_login == null)
{
_login = new LoginView();
_login.GoToRegisterAction = new Action(() =>
{
grid.Children.Clear();
grid.Children.Add(Register);
});
}
return _login;
}
set => _login = value;
}

public RegisterView Register
{
get
{
if(_register == null)
{
_register = new RegisterView();
_register.GoBackToLoginAction = new Action(() =>
{
grid.Children.Clear();
grid.Children.Add(Login);
});
}
return _register;
}
set => _register = value;
}

public MainWindow()
{
InitializeComponent();
Loaded += MainWindow_Loaded;
}

private void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
grid.Children.Clear();
grid.Children.Add(Login);
}
}
秋的红果实 2017-12-16
  • 打赏
  • 举报
回复
Window窗体是Form类的一个实例,要回去原来的实例,需记下当前窗体的某些状态,返回时,建立一个新窗体,然后将记下的状态应用到新的实例
SDHU 2017-12-16
  • 打赏
  • 举报
回复
Page+Frame

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧