2011-06-13 5 views
1

전체캔버스를 이미지 상자가있는 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> 

:

여기 내 그리드의 정의입니다. 여기서 내가 뭘 잘못하고 있니? 잘못된 접근 방식을 취하고 있습니까?

답변

3

예외는 아니지만 캔버스에는 ViewBox를 사용하고자 할 때 필요한 치수가 없습니다.

하나는 캔버스를 사용하지 것이다 내가, 당신은 당신이 RenderTransformMargin 또는 TranslateTransform를 사용할 수있는 주변의 개체를 이동해야하는 경우가 셀에 하나 이상의 컨트롤을 배치 할 수 있기 때문에 그리드를 고수 할 수 재산.

0

실버 라이트가있는보기 상자에서 어린이의 x : 이름 속성을 설정할 수 없기 때문에 이것은 작동하지 않습니다. 적어도 몇 소식통에 따르면 :

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가 정확하고 아무 예외도없는 것으로 나타났습니다. 캔버스에 치수를 설정해야했습니다.

관련 문제