Как сохранить вложенный квадрат сетки без использования ViewBox? - PullRequest
0 голосов
/ 30 июля 2010

Это похоже на how-do-i-keep-aspect-ratio-on-scalable-scrollable-content-in-wpf со следующими отличиями:

  1. Я бы хотел избежать побочных эффектов ViewBox - хотя размер сетки должен изменяться при изменении размера контейнера, часть содержимого сетки должна сохранять свои размеры (например, кнопки).
  2. Мне не нужносоотношение сторон, отличное от 1: 1 (может быть, можно использовать некоторые приемы привязки?)
  3. Код позади в порядке, хотя, если возможно, я бы хотел избежать создания еще одного контейнера

Ответы [ 2 ]

1 голос
/ 30 декабря 2011

Вам просто нужно привязать один из параметров Width или Height к другому:

<Image x:Name="image" Height="{Binding Width, ElementName=image}"/>
1 голос
/ 30 июля 2010

Вы должны привязать ширину и высоту сетки к одному значению:

<!--Dont forget to specify source where MaxSizeParam lies-->
<Grid Width="{Binding MaxSizeParam}" Height="{Binding MaxSizeParam}"/>

MaxSizeParam вы можете предоставить, где вы хотите, и каким образом вы хотите. Например, если у сетки есть Button, то при событии SizeChanged для Button вам следует пересчитать MaxSizeParam:

void button_SizeChanged(object sender, SizeChangedEventArgs e)
        {
            MaxSizeParam = e.NewSize.Width > e.NewSize.Height ? e.NewSize.Width : e.NewSize.Height;
            if (PropertyChanged != null)
                PropertyChanged(this, new PropertyChangedEventArgs("MaxSizeParam"));
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...