在XAML中,如何将椭圆保持为圆?

时间:2009-05-25 20:22:01

标签: wpf triggers properties ellipse

我害怕XAML盲目。我正在开发一个MS Surface应用程序,我在ScatterViewItem(最终用户可以调整大小的容器)中有一个椭圆。我想保持椭圆为圆(宽度==高度)并保持尽可能大(对于椭圆的宽度/高度属性,应采用SVI宽度/高度的最小值)。

首选XAML解决方案(使用属性触发器或类似方法)。

我们非常感谢您的帮助。

3 个答案:

答案 0 :(得分:33)

几分钟前我偶然发现了这个问题并找到了比@Paul Betts更好的解决方案(如果可以的话,我会评论他的答案,但我不能)

您只需使用<Ellipse Stretch="Uniform" />即可获得一个圈子。

来源:http://forums.silverlight.net/t/160615.aspx

答案 1 :(得分:15)

一个简单的Viewbox可以解决这个问题吗? E.g。

<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在无法拉伸到完整大小时居中(因为比例缩放)。

答案 2 :(得分:5)

<Ellipse x:Name="anEllipse" Width={Binding Path=ActualHeight ElementName=anEllipse} />

如果您也进行了相对绑定,那么您可能无法命名。