2014-04-15 47 views
0

我需要弄清楚如何在運行時更改UserControl's和。我正在嘗試在mouseMove事件期間執行此操作。 WidthHeightXAML中設置爲Auto在運行時更改UserControl上的寬度和高度

'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的生活裏 - 沒有什麼幫助。

考慮容器和它的屬性 - 自動和拉伸這裏使用:

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

回答

1

WidthHeightAuto設置的實際數值是Double.NaN。當您將任何內容添加到該初始NaN值時,結果將始終爲NaN。您可以使用ActualWidth/ActualHeight代替添加或嘗試添加Double.IsNaN檢查,然後再設置該值,如果爲true,則只需使用ActualWidth/ActualHeight

+0

這些是'ReadOnly'屬性,所以我想我不瞭解如何使用它們。我甚至試圖從固定大小開始避免NaN的事情。 – OneFineDay

+0

我發現,如果我將所有三個(UC,網格,畫布)設置爲一個大小,它會改變寬度,但我需要網格和畫布調整大小(拉伸)到UC - 如果設置了它們自動「和」UC「設置爲初始尺寸。很混亂! – OneFineDay

+0

Width = ActualWidth + deltaH –

相關問題