所有
我正在尝试制作我正在以合理的方式调整大小的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期间必定会出现某种未处理的异常,因为图像根本不显示。我在这做错了什么?我采取了错误的做法吗?
答案 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需要设置尺寸。