日期:2014-05-17  浏览次数:21031 次

WPF,请解释下这个Viewbox的布局

<Window x:Class="WPF2.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="400" Width="578">
    <Grid>
        <Button Content="Button" HorizontalAlignment="Left" VerticalAlignment="Top" Width="75"/>
    </Grid>
</Window>



如果在Grid外面套一层Viewbox,结果如下:

<Window x:Class="WPF2.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="400" Width="578">   
    <Viewbox>
        <Grid>
            <Button Content="Button" HorizontalAlignment="Left" VerticalAlignment="Top" Width="75"/>
        </Grid>
    </Viewbox>
</Window>




问题:
为什么使用Viewbox之后,Button会变那么大呢?Viewbox的Stretch属性默认为Uniform,那就说明Grid是按比例适合Viewbox的尺寸吧,那Button应该还是与没有使用Viewbox时一样大的吧。
请解释下

------解决方案--------------------
给你的Grid加上Width="2" Height="1",不然没大小,放大了之后大小也是0.
不知道你为什么非要一口咬定Viewbox都是铺满窗口的 ,我都说了,Viewbox的大小和位置是多个属性和子元素共同确定的。

------解决方案--------------------
1.ViewBox首先是内部元素等比例缩放。
2.你直接把ViewBox放在Window里面自动拉伸填充

显示结果就是你内部的按钮按照原始比例最大尺度放大,填充。。就成这个样子了啊。。 - -~~~
------解决方案--------------------
引用:
Quote: 引用:

1.ViewBox首先是内部元素等比例缩放。
2.你直接把ViewBox放在Window里面自动拉伸填充

显示结果就是你内部的按钮按照原始比例最大尺度放大,填充。。就成这个样子了啊。。 - -~~~

可是Button是放在Grid里面的啊,Grid不按比例填充吗


不是。。。。ViewBox继承自Decorator。。。grid继承自panel。。。。。有区别啊。。。

还有grid在没有给它的width和height赋值和没有设置拉伸属性或者拉伸属性无效的时候,它的大小是它内部元素button决定的。。 - -然后放入viewbox放大。。就成那个样子了。。