将画布放入Silverlight中的Viewbox与图像

时间:2011-06-13 15:59:40

标签: silverlight image canvas resize viewbox

所有

我正在尝试制作我正在以合理的方式调整大小的Silverlight应用程序。为此,我想我会使用动态网格。在网格的中心,我需要在画布中放置一个图像,因为我会动态地将对象放在它上面。理想情况下,当用户使浏览器窗口变大时,中心列将能够调整大小并变大,从而增加图像。

这就是我所拥有的:

<Viewbox Grid.Row="0" Grid.Column="1">
    <Canvas x:Name="cvsCenterPane">
        <Image x:Name="imgFormImage" MouseLeftButtonDown="imgFormImage_MouseLeftButtonDown" 
                 MouseLeftButtonUp="imgFormImage_MouseLeftButtonUp" MouseMove="imgFormImage_MouseMove" />
    </Canvas>
</Viewbox>

在后面的代码中,我然后设置了图像源。

这是我的网格定义:

<Grid x:Name="LayoutRoot" Background="DarkCyan" ShowGridLines="True">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="300" />
        <ColumnDefinition Width="*" />
        <ColumnDefinition Width="300" />
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="*" />
        <RowDefinition Height="100" />
    </Grid.RowDefinitions>

我认为在构建Viewbox期间必定会出现某种未处理的异常,因为图像根本不显示。我在这做错了什么?我采取了错误的做法吗?

2 个答案:

答案 0 :(得分:3)

没有例外,当您想要使用ViewBox时,画布没有任何设置尺寸。

我不会使用画布,您可以坚持使用网格,因为您可以在单元格中放置多个控件,如果需要移动对象,可以使用Margin或{ TranslateTransform属性中的{3}}。

答案 1 :(得分:0)

这不起作用,因为您无法使用silverlight在Viewbox中设置子项的x:Name属性。至少根据一些消息来源:

http://blog.ningzhang.org/2008/11/viewbox-control-in-silverlight-toolkit.html
http://forums.silverlight.net/forums/p/48535/128830.aspx
http://forums.silverlight.net/forums/p/45789/123941.aspx#123941

这似乎是设计上的。已经提出了一些解决方法,所以我会尝试它们。

编辑:HB似乎是正确的,没有例外,Canvas需要设置尺寸。