В XAML, как я могу сохранить эллипс в виде круга? - PullRequest
19 голосов
/ 26 мая 2009

Боюсь, я становлюсь слепым XAML. Я разрабатываю приложение MS Surface, и у меня есть эллипс внутри ScatterViewItem (контейнер, размер которого может изменить конечный пользователь). Я хотел бы сохранить эллипс в виде круга (ширина == высота) и сделать его как можно большим (минимальное значение ширины / высоты SVI следует принимать для обоих свойств ширины / высоты эллипса).

Предпочтительным является решение только для XAML (с использованием триггеров свойств или аналогичных).

Ваша помощь, как всегда, ценится.

Ответы [ 3 ]

34 голосов
/ 02 октября 2012

Я наткнулся на этот вопрос несколько минут назад и нашел гораздо лучшее решение, чем @Paul Betts (я бы прокомментировал его ответ, если смогу, но не смогу)

Вы можете просто использовать <Ellipse Stretch="Uniform" />, чтобы получить круг.

Источник: http://forums.silverlight.net/t/160615.aspx

15 голосов
/ 26 мая 2009

Будет ли простой 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, когда его нельзя растянуть до полного размера (из-за пропорционального масштабирования).

5 голосов
/ 26 мая 2009
<Ellipse x:Name="anEllipse" Width={Binding Path=ActualHeight ElementName=anEllipse} />

Возможно, вам не удастся назвать это, если вы также сделаете относительную привязку.

...