none
WPF如何实现窗口大小变化时,窗口中所有内容同步进行缩放? RRS feed

  • 问题

  • 如果窗口大小发生变化,我希望窗口中所有内容按比例放大或缩小,以保持整个窗口内容的布局,文字、图形、图像随窗口变大而放大,变小时自动缩小。

    WPF可以直接通过设置图形类控件的水平和垂直Alighment为Stretch实现,但对文字和Winform控件无效?我需要的是文字放大,而不是因为窗口变大(或者说分辩率变高,比如由窗口转为全屏)后文字段落的重新排版。

    这种需求的用途在于,我做好一个4:3或者16:9的WPF应用程序,部署在不同的终端屏幕大小上时我无需考虑它的分辨率,大屏幕的文字和按钮就大点儿,小屏幕的就小点。

    ADOBE FLASH的ActionScript有一个FSCommand("AllowScale","true")函数能实现这个效果,WPF有没有类似设置的地方?

    2010年3月31日 3:38

答案

  • 楼主,

    你用一个ViewBox装上所有的Window内容然后当window缩放时就可以一起放大缩小了。

    谢谢


    Jim Zhou -MSFT
    • 已标记为答案 YQY 2010年4月1日 2:43
    2010年3月31日 15:05
    版主

全部回复

  • 补充一点,VS 2008 WPF Application项目中XAML编辑器的Design视图左上角有一个Zoom工具栏,移动滑块时画布上的所有控件就会自动进行按比例缩放,我要的就是这种效果,不知道在WPF中有没有快捷的实现方法?
    2010年3月31日 10:51
  • 楼主,

    你用一个ViewBox装上所有的Window内容然后当window缩放时就可以一起放大缩小了。

    谢谢


    Jim Zhou -MSFT
    • 已标记为答案 YQY 2010年4月1日 2:43
    2010年3月31日 15:05
    版主
  • 楼主,

    你用一个ViewBox装上所有的Window内容然后当window缩放时就可以一起放大缩小了。

    谢谢


    Jim Zhou -MSFT


    Great! It does really work!
    非常感谢!

    另,有个小问题,VS2008里使用ViewBox后,Design视图看不到ViewBox里包含的内容,无法进行可视化编辑了,但如果用Blend 3就没有问题。(这是个BUG,还是By design的?毕竟比起Silverlight项目,WPF项目有一个可视化编辑器已经算是厚道的了。^_^)

    2010年4月1日 2:51