首先我们考虑界面切换之间的组件类型,是窗口还是用户控件?可以有三种方式:
这个网上有很多很容易搜到的办法,用窗口的Close()和Show似乎就能解决了。
常见于菜单栏点击不同按钮,切换不同的界面。例如:
界面显示
常见应用场景:**管理系统。同理,把菜单栏放在下面,我们可以做到类似微信那样的界面,菜单栏在下方。
使用场景:
还是这图作为例子吧。加入我们对下面数据栏的某一条消息感兴趣,想点开看,然后这个详细信息就显示在右边,即将原来右边的所有东西清除,放入新的组件。
这里我思考的核心的问题是:如何在用户组件中获取主窗口的控件使用。如果我们在我们定义的用户组件中,可以像上一点那样,使用gridExample.Children.Clear()和gridExample.Children.ADD(new 我们新定义的用户组件)那就好了。
事实上是可以的。我们通过
var w = Window.GetWindow(btn1);
其中,btn1是当前用户组件的某个按钮。这句话的意思就是,我们查询当前组件所处窗体,并用w引用它。知道窗口名字,那我们就可以去找它的组件啦。不过我们不能直接引用。我们需要通过寻找,再引用。
var g = w.FindName("window_grid") as Grid;
g.Children.Clear();
之后就可以ADD()啦。注意:直接写w.window_gridChildren.Clear()是会报错的。hhhhh
我对此的理解:主窗口的组件是私有的,但也不是完全不能找到的。我们只能通过FindName的方法去间接的寻找到这个组件。
本文章使用limfx的vscode插件快速发布