none
请教一个关于Frame跳转产生的控件消失问题 RRS feed

  • 问题

  • 我在一个自定义的主窗体中使用了Frame容器,并且在导航事件添加了动画,但在加载别的Page时,窗体上的其它控件都会消失,在Page加载完成后又会恢复原样。我测试后貌似是因为我的Page里的Load事件做的事情太多了,会一瞬间(大约1s)卡住,但这会影响到窗体的其它控件吗?如果真是这样的话我想请教下还有什么好的解决方案?

    截图:

    1)正常情况。

    2)切换时触发动画,一切正常。

    3)出现问题,切换被卡住的一瞬间就会所有控件一起不见,加载完成后会还原。

    2014年12月9日 13:14

全部回复

  • 你好 ZQing,

    如果是你的操作几种在load界面造成了这种情况,我觉得你可以试试新开线程去做一些操作,使用这个方法 Dispatcher.Invoke

    http://msdn.microsoft.com/en-us/library/system.windows.threading.dispatcher.invoke(v=vs.110).aspx

    这样可以减少load的时候的频繁操作。

    现在因为我不太清楚你的这些控件相对于Page是怎么放的,我也不是很清楚会不会造成这种刷新不成功的现象,但是如果新开线程来做没有用,我觉得我们需要从Frame的Cache方面来着手看这个问题:

    https://code.msdn.microsoft.com/windowsdesktop/WPF-Frame-Navigation-Cache-47337921

    在Navigation的时候会产生这种Cache,它有可能也是你这里不显示的原因。



    Barry
    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2014年12月10日 10:00
    版主
  • 首先非常感谢您的回答,Barry Wang。

    关于Dispatcher.Invoke,我在切换Page时调用了滑动动画效果使用过这个方法,但就像我之前我描述的问题一样,会卡住一瞬间,并导致窗体的其它控件消失;

    其次我的图可能表现的不是很清楚,窗体的右下那块部分就是Frame容器的Page内容,而左侧和上侧的部分则是属于窗体的控件,我在切换Page时却会导致我窗体所拥有的控件消失,这个问题是我很不解的,因为这些控件都不是放在Page或Frame内的;

    Frame的Cache方面我不是很了解,但感谢您的指点,我需要去了解一下这方面的知识。

    2014年12月10日 10:25