2011-06-01 70 views
0

我在Silverlight应用程序上工作,我想通过XAML绑定画布宽度和高度,但我如何绑定它。因为画布宽度和高度我试图绑定它,但不会在我的情况下工作,所以如果你们有任何其他绑定方式来绑定它,请放一些代码,以便我可以找出解决这个问题的方法。Silverlight 4画布高度和宽度绑定

我想绑定这与图像的高度和宽度,所以有些时候图像大小是1000 x 1200和一些时间图像大小将1400 x 1700所以我怎么能绑定它?

<Viewbox 
      Grid.Row="1" 
      Grid.Column="0" 
      Grid.ColumnSpan="2"> 
       <Canvas 
       Height="1000" 
       HorizontalAlignment="Center" 
       VerticalAlignment="Center" 
       Width="1200"> 

        <Image x:Name="imgEdit" 
           Cursor="Hand" 
           MouseLeftButtonDown="imgEdit_MouseLeftButtonDown" 
           MouseMove="imgEdit_MouseMove" 
           MouseLeftButtonUp="imgEdit_MouseLeftButtonUp" 
           HorizontalAlignment="Center" 
           VerticalAlignment="Center" 
           RenderTransformOrigin="0.5, 0.5"> 

        <Image.Effect> 
         <l:briconEffect 
            Brightness="{Binding ElementName=bVal, Path=Value}" 
            Contrast="{Binding ElementName=cVal, Path=Value}" 
            Gamma="{Binding ElementName=gVal,Path=Value}" 
            RedRatio="{Binding ElementName=rVal,Path=Value}" 
            BlueRatio="{Binding ElementName=blueVal,Path=Value}" 
            GreenRatio="{Binding ElementName=greenVal,Path=Value}"/> 
        </Image.Effect> 

        <Image.RenderTransform> 

         <TransformGroup> 
          <RotateTransform x:Name="Rotator"> 
           <RotateTransform.Angle> 
            <Binding ElementName="sldVerHorizontal" Path="Value" Mode="TwoWay"/> 
           </RotateTransform.Angle> 
          </RotateTransform> 

          <ScaleTransform x:Name="Scale"> 
           <ScaleTransform.ScaleX> 
            <Binding ElementName="sldZoomInOut" Path="Value" Mode="TwoWay"/> 
           </ScaleTransform.ScaleX> 
           <ScaleTransform.ScaleY> 
            <Binding ElementName="sldZoomInOut" Path="Value" Mode="TwoWay"/> 
           </ScaleTransform.ScaleY> 
          </ScaleTransform> 
         </TransformGroup> 

        </Image.RenderTransform> 


       </Image> 

       <Border 
         x:Name="maskBorder" 
         MinWidth="200" 
         MinHeight="200" 
         BorderBrush="Black" 
         BorderThickness="5" 
         Canvas.Left="250" 
         Cursor="Hand" 
         Canvas.Top="250"> 

        <Rectangle 
         MinWidth="200" 
         MinHeight="200" 
         x:Name="maskRect" 
         Canvas.Left="250" 
         Cursor="Hand" 
         Canvas.Top="250"> 
        </Rectangle> 
       </Border> 
      </Canvas> 
     </Viewbox> 
+0

你的意思是你的Canvas应该根据图像的大小增长和调整大小? – kanchirk 2011-06-01 14:45:32

+0

是的。我正在寻找这个。 – 2011-06-01 14:51:13

回答

0

您可以结合画布宽度和使用元Height属性绑定这样

宽度= {结合元件= IMGEDIT,路径= ActualWidth的} 高度= {结合元件= IMGEDIT,路径=的ActualHeight}

您也可以将画布包裹在固定宽度和高度的ScrollViewer中,以限制用户屏幕大小。

+0

谢谢亲爱的@kanchir:这是工作,但仍然是我的问题不解决。因为我想将图像包装到画布上,无论它是水平图像还是垂直图像。所以你仍然有任何其他的解决方案,那么我会更加感谢你。 – 2011-06-01 16:08:26

+0

你有没有尝试将图像放入ScrollViewer中? kanchirk 2011-06-01 17:03:48

+0

我曾试过,但它不会工作,因为我想平移设施,因此scrollviewer将无法在两者之间工作。 – 2011-06-01 17:12:12