2013-03-01 128 views
0

我創建了一個類從UserControl
派生我的任務是控制高度和寬度的大小比例。 (如果容器插入控件將調整它的大小。)我需要嚴格控制方形。動態改變控件的大小?

應該做些什麼來改變控件的新維度? SizeChangedEventArgs.NewSize屬性是隻讀的。

private void MyControl_SizeChanged(object sender,SizeChangedEventArgs e) 
{ 
    if (e.NewSize.Height!=e.NewSize.Width) 
    { 
     // to-do ? 
    } 
} 

寬度和高度在我的情況是NaN,因爲模式設置爲自動。我無法手動更改寬度或高度屬性,因爲此時控件將自動固定大小,並且在縮放放置網格時不會更改。

+1

你想的寬度改變高度或喜ght到寬度 – 2013-03-01 08:59:59

+0

@SonerGönül你忘了再次編輯代碼塊:) – Default 2013-03-01 09:08:58

+0

@Default該死!我剛剛幾分鐘前醒了過來。也許我需要一杯咖啡。 – 2013-03-01 09:12:13

回答

3

如果你想有一個控制,是完全平方,最簡單的方法是使用綁定像這樣:

<Control Width="{Binding RelativeSource={RelativeSource Self}, Path=ActualHeight}"/> 

編輯 OK,好像你可以用你的事件處理進展順利:

FrameworkElement control =(sender as FrameworkElement); 
double longerSideLength = (control.Width >= control.Height ? control.Width : control.Height); 
control.Width = longerSideLength; 
control.Height = longerSideLength; 

你可能想一些驗證添加到減少呼叫計...

+0

情況有點困難,我想要那種制服。 (w> h)w = h; if(h> w)h = w; – Mixer 2013-03-01 09:26:02

+0

它會幫助把你的控件放在[viewbox](http://wpftutorial.net/ViewBox.html)中嗎? – 2013-03-01 09:28:00

+0

我在開始使用ViewBox爲此目的 ,但我不得不停止使用它原因在這裏描述: http://stackoverflow.com/questions/14957794/viewbox-stretch-blurs-the-controls – Mixer 2013-03-01 09:30:27