在运行时更改UserControl的宽度和高度

时间:2014-04-15 01:09:07

标签: silverlight-5.0

我需要弄清楚如何在运行时更改UserControl's WidthHeight。我试图在mouseMove事件期间执行此操作。 Width中的HeightAuto设置为XAML

'mouseDown event
mouseVerticalPosition = e.GetPosition(Nothing).Y
mouseHorizontalPosition = e.GetPosition(Nothing).X

'mouseMove event
Dim deltaV As Double = e.GetPosition(Nothing).Y - mouseVerticalPosition
Dim deltaH As Double = e.GetPosition(Nothing).X - mouseHorizontalPosition

Me.Width = Me.Width + deltaH
UpdateLayout() 'does not work

此代码位于UserControl内,而不是Page生活的UserControl内 - 如果有帮助的话。

考虑容器及其属性 - 此处使用auto和stretch:

<Grid x:Name="LayoutRoot" Background="Transparent" >
 <Canvas Name="cnv" Margin="18">
      <Rectangle Name="Rect" Margin="0" />
 </Canvas>
</Grid>

1 个答案:

答案 0 :(得分:1)

AutoWidth上的Height设置的实际数值为Double.NaN。当您向该初始NaN值添加任何内容时,结果将始终为NaN。您可以使用ActualWidth / ActualHeight作为要添加的数字,也可以在设置值之前尝试添加Double.IsNaN检查,如果是,则只使用ActualWidth / {{ 1}}。