Putting Canvas Inside Viewbox in Silverlight With Image

独自空忆成欢 提交于 2019-12-11 11:03:29

问题


All,

I'm trying to make the silverlight app I'm making resize in a reasonable manner. To do this, I thought I would use a dynamic grid. In the center of the grid I need to put an image inside of a canvas because I will dynamically be positioning objects on top of it. Ideally, as the user makes the browser window larger, the center column would be able to resize and grow larger, thereby growing the image.

Here's what I've got:

<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>

In the code behind, I then set the image source.

Here's my grid definition:

<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>

I think there must be some sort of unhandled exception occurring during the construction of the Viewbox because the image does not display at all. What am I doing wrong here? Am I taking the wrong approach?


回答1:


There is no exception, the canvas just does not have any set dimensions which is a requirement when you want to use a ViewBox.

I for one would not use a canvas, you can stick with the grid since you can place more than one control in a cell and if you need to move the objects around you can use the Margin or a TranslateTransform in the RenderTransform property.




回答2:


This does not work because you cannot set the x:Name attribute of children in a Viewbox with silverlight. At least according to a few sources:

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

this seems to be by design. A few workarounds have been suggested, so I will try them.

Edit: HB seems to be correct, there is no exception, the Canvas needed to have dimensions set.



来源:https://stackoverflow.com/questions/6332956/putting-canvas-inside-viewbox-in-silverlight-with-image

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!