TabControl всегда изменял размер выбранных элементов вкладки? - PullRequest
2 голосов
/ 22 марта 2012

У меня есть WPF TabControl, содержащий два TabItems с различной шириной и высотой. Странная вещь, когда я переключаюсь между элементами, размер TabControl изменяется, чтобы точно соответствовать выбранным элементам вкладки. Например, если я щелкну меньший TabITem, TabControl станет меньше, а если я выберу больший, он станет больше.

Я думаю, что это выглядело бы глупо с точки зрения пользователя, и это не так в обычном графическом интерфейсе вкладок, таком как свойства Windows. Можно ли установить ширину и высоту, чтобы соответствовать наибольшему предмету? Я хочу попытаться избежать установки постоянного значения

Ответы [ 2 ]

3 голосов
/ 22 марта 2012

Вам лучше иметь фиксированный размер TabControl относительно размера окна, и пусть TabItems изменяется в соответствии с размером TabControl.

РЕДАКТИРОВАТЬ:

Убедитесь, что строка или столбецкоторый содержит TabControl не имеет автоматического размера.Если ваш код выглядит следующим образом, ваш TabControl будет изменен в соответствии с активным TabItem.

     <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height=".20*"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height=".20*"/>
        </Grid.RowDefinitions>
        <TabControl Grid.Row="1" BorderBrush="Red" BorderThickness="1">
            <TabItem Header="Blue">
                <Rectangle Width="200" Height="200" Fill="Blue"></Rectangle>
            </TabItem>
            <TabItem Header="Black">
                <Rectangle Width="100" Height="100" Fill="Black"></Rectangle>
            </TabItem>
        </TabControl>
    </Grid>

И если вы измените строку <RowDefinition Height="Auto"/> в приведенном выше коде на <RowDefinition Height="*"/> it 'Я решу проблему.

Вы также можете поделиться кодом, и мы посмотрим на него.

0 голосов
/ 22 марта 2012

Ну, если вы не хотите иметь фиксированный размер, я вижу другой вариант, но этот не дешев с точки зрения производительности. Что вам нужно знать, так это ширину и высоту, которые понадобятся второй вкладке. Это означает, что вы можете привязать высоту и ширину TabControl к DesiredSize большего элемента плюс некоторое дополнительное пространство. Но поскольку второй элемент может быть еще не измерен (проверьте свойство IsMeasureValid), вам необходимо вызвать UpdateLayout, который выполняет полную разметку для элементов управления.

Но, в общем, я бы не советовал вам идти по этому пути, так как игра с макетом, как правило, - боль в а ..... Я знаю, что это не то, что вы просите, но по опыту -> не делайте этого.

Почему бы не дать фиксированный размер и добавить прокрутки? Или воспользуйтесь док-панелью и закрепите все где-нибудь, и оставьте tabcontrol оставшееся место, чтобы оно всегда заполняло ваше окно.

НТН Martin

...