WPF динамическое расположение: как осуществить квадратные пропорции (ширина равняется высоте)?

Я изучаю WPF и не могу выяснить как к enfore мои кнопки для принятия квадратной формы.

Вот моя Разметка XAML:

<Window x:Class="Example"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Height="368" Width="333">
  <Window.Resources>
    <Style x:Key="ToggleStyle" BasedOn="{StaticResource {x:Type ToggleButton}}"
                            TargetType="{x:Type RadioButton}">
    </Style>
  </Window.Resources>
  <RadioButton Style="{StaticResource ToggleStyle}">
        Very very long text
  </RadioButton>
</Window>

Определение явных значений для Width и Height атрибуты походят на неверное представление - кнопка должна вычислить свои размеры на основе ее содержания автоволшебно, но сохранить ее ширину и высоту равными. Действительно ли это возможно?

35
задан Gart 5 June 2010 в 19:18
поделиться

2 ответа

Попробуйте это - похоже, это работает в Kaxaml:

<Button 
    MinWidth="{Binding ActualHeight, RelativeSource={RelativeSource Self}}" 
    MinHeight="{Binding ActualWidth, RelativeSource={RelativeSource Self}}">
  Some content
</Button>

(Для проверки я поместил текстовое поле внутри кнопки, потому что это простой способ изменить размер содержимого без повторного анализа Xaml.)

Изменить: извините, вероятно, следовало указать его как стиль, соответствующий вашему примеру:

<Style TargetType="Button" x:Key="SquareButton">
  <Setter Property="MinWidth" Value="{Binding ActualHeight, RelativeSource={RelativeSource Self}}" />
  <Setter Property="MinHeight" Value="{Binding ActualWidth, RelativeSource={RelativeSource Self}}" />
</Style>
48
ответ дан 27 November 2019 в 07:11
поделиться

Я думаю, вы хотите привязать ширину кнопки к ее высоте, например:

<Button Name="myButton"
Width="{Binding ElementName=myButton, Path=Height}"
Height="100">
Button Text
</Button>
4
ответ дан 27 November 2019 в 07:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: