Main画面有两个usercontrol组成,是用grid部署的。现在让其中一个全屏,让另一浮在这个上面的感觉,就是要能部分遮挡全屏的内容这个样子的,有没有什么办法?在winform里面有sendtoback 或者 bringtofront 方法,想问下有没有实现类似效果的。。。表达不是很清楚,希望有关大神帮忙,谢谢
sendtoback 或者 bringtofront 本身就是容器内元素排序问题;
目前几乎的视图框架体系都是逃脱不了这个概念,wpf一样是一棵树(略有差别,比如Content、Child不是容器,而winForm都是Controls->从Control派生)容器模型——理解到这,那么你要解决这个问题就很简单了,甚至可以先把整个布局全部设置好,要调的可以预留个布局控件。
还有一点要注意,WPF是检查了视图层对象唯一性的——winForm没有,因此要先移除再赋值(插入)。
感谢大神回复,看着能理解一点。可惜实际操作的时候,总是想出现在最前的画面被遮挡住,迷茫中。。。
ZIndex
设置了,可是想显示在最前面的画面,被半遮挡住了。。不知道什么原因。
因为你用的是grid吧,分在不同的column或row当然会被挡一半
@布鲁克石: 是的。。。我确实用的是grid。。大神,有什么解决办法没?
@别了悲小雨: 不知道你具体的业务,不过如果非要用grid的话,除了设置zindex外,如果是分column则设下columnspan,是row就设下rowspan
@布鲁克石: 谢谢,是这样的,我在一个grid.column 里面放置了2个usercontrol,其中一个usercontrol宿主了winfrom的一个画面。这个在我想显示不宿主winfrom画面程序的时候,被有winfrom 的这个usercontrol盖住了。不知道描述的能否理解。。求指点。
@别了悲小雨: 哦,原来是有winform呀,这个用zindex不好使,它永远在最前的,可以考虑设置Visibility为hidden来隐藏,或者如果不是全部隐藏的话,可以先用win32的截图把winform抓个图出来显示,再隐藏winform,这样zindex就起作用了,看起来也好像前面浮在上面。
@布鲁克石: 好的,理解了。谢谢~
可以用Popup控件来解决你的问题
在grid布局下,兄弟元素是有顺序的,你要使用不影响布局的隐藏方式 C开头的那个 而不是hide,就可以实现你想要的效果了。
在外层套一个画布 当一个全屏时 将要显示在前面的控件从Grid中移除 然后加载到画布上 当另一个不再全屏时 将之前移除的控件从画布移除 重新加载到Grid的相应位置