首页 新闻 搜索 专区 学院

如何实现WPF在Grid中加入一个窗体?

0
悬赏园豆:15 [已解决问题] 解决于 2013-05-06 21:59

我创建一个WPF项目,系统创建两个文件app和mainwindow。我在mainwindow中放置一个Grid,分两行,其中第一行(高度150)是3个按钮A、B、C,第二行是填充剩下区域。

我想实现这样一个效果:当窗体加载时,先在第二行中显示一些内容(比如有表格、下拉列表框等控件),这些内容对应按钮A;当点击按钮B时,将第二行中的所有内容释放(不仅仅是将内容清空,还要把用过的变量释放,比如从数据库中查询到的数据),同时将按钮B对应的内容(也是表格、一些按钮之类的控件的集合)再加载显示出来;点击按钮C也是一样。

我同事是这样实现,在Grid第一行放3个Radio按钮,然后在第二行一次性将三个按钮对应的内容都加载,但只有Radio选中那个被显示,其余的都隐藏(具体好像是用选项卡实现)。我不想采用这个方案,因为我每个按钮对应的内容都可能要进行大量的数据库操作,所以我想切换按钮时,就把原来的内容和数据释放,然后再重新加载。

我原来用WinForm实现时,是点击一个按钮,就实例化一个Form对象,点击这个对象窗体的关闭按钮就释放这个对象。我现在不想弹出N多窗口,程序运行始终就是一个窗口,点击某个按钮,就把原来需要弹出新窗口的内容都显示到Grid中一个指定的位置。

WPF里能不能将某个按钮对应的内容、控件和数据都事先写到一个Window中,然后Grid的指定区域展现这个Window的内容,当点击别的按钮时,先释放这个Window对象,然后再在这个区域加载其他的Window对象?

这个如何实现好?请各位老师不吝赐教!

wpf
守护晴天的主页 守护晴天 | 初学一级 | 园豆:98
提问于:2013-05-02 13:10
< >
分享
最佳答案
0

你要的效果是不是每次点个button下面就new 一个View实例?

其实你同事的做法也是可以的,你这就相当于导航了,有很多框架都可以实现了。

1.用你同事的方法,开始全部加载页面,获取数据,释放内存放在切换选项卡的时候做

2.grid是布局控件,有children属性,可以add,也可以remove,按钮操作这个grid不就好了?

收获园豆:12
一梦三只鸭 | 菜鸟二级 |园豆:309 | 2013-05-02 14:25

@sun8134你们说的都很对!不过小鸟不会飞回答的比较早也比较细,因此把最佳答案给你了。我最终采用的是Frame+Page.xaml的方式,跟你们的方案也都差不多。

守护晴天 | 园豆:98 (初学一级) | 2013-05-06 22:03
其他回答(1)
-1

Grid可以在后台Grid.Children.Add()或者Grid.Children.Clear()的

收获园豆:3
sun8134 | 园豆:98 (初学一级) | 2013-05-06 12:13
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册