В XAML, как я могу сохранить эллипс, являющийся кругом?
Я получаю XAML-слепые, я боюсь. Я разрабатываю приложение MS Surface, и у меня есть эллипс внутри ScatterViewItem (контейнер, который конечный пользователь может изменять размер). Я хотел бы сохранить эллипс круг (ширина == высота) и держать его как можно большим (минимальное значение ширины/высоты SVI должно приниматься как для свойств ширины, так и высоты эллипса).
Предпочтительно использовать только решение XAML (используя триггеры свойств или аналогичные).
Ваша помощь очень ценится, как всегда.
Ответы
Ответ 1
Может ли простой 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
по центру, когда его невозможно растянуть до полного размера (из-за пропорционального масштабирования).
Ответ 2
Я наткнулся на этот вопрос несколько минут назад и нашел гораздо лучшее решение, чем @Paul Betts (я бы прокомментировал его ответ, если мог, но не могу)
Вы можете просто использовать <Ellipse Stretch="Uniform" />
для получения круга.
Источник: http://forums.silverlight.net/t/160615.aspx
Ответ 3
<Ellipse x:Name="anEllipse" Width={Binding Path=ActualHeight ElementName=anEllipse} />
Возможно, вам удастся не называть это, если вы также относили привязку.