我需要弄清楚如何在运行时更改UserControl's
Width
和Height
。我试图在mouseMove
事件期间执行此操作。 Width
中的Height
和Auto
设置为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>
答案 0 :(得分:1)
Auto
或Width
上的Height
设置的实际数值为Double.NaN
。当您向该初始NaN值添加任何内容时,结果将始终为NaN。您可以使用ActualWidth
/ ActualHeight
作为要添加的数字,也可以在设置值之前尝试添加Double.IsNaN
检查,如果是,则只使用ActualWidth
/ {{ 1}}。