Reuirement:
需要在主布局中显示所有子页面。没有打开新窗口我的意思是它不应该作为与主窗口的单独窗口可见
解决方案我想:
我在主页面中使用了内容展示器。
将所有其他页面创建为用户控件。
点击菜单ViewWindow.Content = new SalesEntry();
通过使用我正在显示。
问题:
要关闭该用户控件,我使用了一个按钮单击(用户控件中的按钮)
预先形成this.Visibility = Visibility.Hidden;
但每当用户请求此页面时,页面都会被初始化并显示出来。
那么,最好的方法是克服这种情况或以其他方式解决这个问题。 (我被告知不要使用任何框架作为项目要求)
我是非常新的WPF ..
请帮助我..
答案 0 :(得分:1)
你在做什么都没关系,我真的不明白这里的问题,但我会告诉你我会怎么做。
您将拥有一个父视图,一个Window。你会有很多孩子,UserControl's。
在您的窗口内,您应该有一种方法来选择要显示的孩子。这可以使用按钮或菜单完成。
选择子项时,将其实例化为对象并订阅其exit事件。当孩子触发此事件时,您将在父窗口中从孩子中删除该孩子。
// This one defines the signature of your exit event handler
public delegate void OnExitHandler(UserControl sender);
// This is your child, UserControl
public partial class MyChild : UserControl
{
public event OnExitHandler OnExit;
public MyChild()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
this.OnExit(this);
}
}
// This is your parent, Window
public partial class MainWindow : Window
{
private MyChild _control; // You can have a List<UserControl> for multiple
public MainWindow()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
_control = new MyChild();
_control.OnExit += _control_OnExit; // Subscribe to event so you can remove the child when it exits
_content.Content = _control; // _content is a ContentControl defined in Window.xaml
}
private void _control_OnExit(UserControl sender)
{
if(sender == _control)
{
// Or if you have a collection remove the sender like
// _controls.Remove(sender);
_control = null;
_content.Content = null;
}
}
}
如果您的问题不是其他问题,请发表评论。