我很害怕XAML盲人。我正在開發MS Surface應用程序,並且在ScatterViewItem(最終用戶可以調整大小的容器)內部有一個橢圓。我想讓橢圓保持一個圓(寬度==高度)並儘可能大(對於橢圓的寬度/高度屬性,應該爲SVI的寬度/高度的最小值)。在XAML中,我如何保持橢圓是一個圓?
首選XAML only解決方案(使用屬性觸發器或類似屬性)。
您的幫助一如既往地倍受讚賞。
我很害怕XAML盲人。我正在開發MS Surface應用程序,並且在ScatterViewItem(最終用戶可以調整大小的容器)內部有一個橢圓。我想讓橢圓保持一個圓(寬度==高度)並儘可能大(對於橢圓的寬度/高度屬性,應該爲SVI的寬度/高度的最小值)。在XAML中,我如何保持橢圓是一個圓?
首選XAML only解決方案(使用屬性觸發器或類似屬性)。
您的幫助一如既往地倍受讚賞。
簡單的Viewbox
會訣竅嗎?例如。
<Viewbox xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
HorizontalAlignment="Center"
VerticalAlignment="Center">
<Canvas Width="100" Height="100">
<Ellipse Fill="Red" Width="100" Height="100" />
</Canvas>
</Viewbox>
的Viewbox
將擴展它的內容來填充Viewbox
的區域,默認情況下不按比例縮放。指定的水平和垂直對齊將Ellipse
保持居中,因爲它無法拉伸到全尺寸(由於比例縮放)。
<Ellipse x:Name="anEllipse" Width={Binding Path=ActualHeight ElementName=anEllipse} />
如果你做了相對綁定,你也可以不用命名。
如果邊界框的高度大於寬度會怎樣?在那種情況下,我想要Height = ActualWidth。 – 2009-05-26 10:14:57
在這種情況下,您需要編寫代碼來執行此操作 - 即,您要執行貪婪的尺寸調整,以保持縱橫比(類似於電影播放器的操作方式,根據哪個軸切換其基於其尺寸的哪一側更大) – 2009-05-26 15:38:55
我偶然發現在這個問題上幾分鐘前,發現比@保羅貝茨一個更好的解決方案(我對他的回答評論,如果我可以,但我不能)
您可以簡單地使用<Ellipse Stretch="Uniform" />
得到一個圈子。
Briljant! Briljant(我至少需要15個字符才能告訴你) – 2009-05-27 07:45:04