Как уменьшить высоту scrollviewer в tabcontrol? - PullRequest
1 голос
/ 07 декабря 2011

У меня есть customUserControl, который размещен в TabItem в TabControl в приложении silverlight.Этот TabControl является частью большого контейнера пользовательского интерфейса с разделителями.

Мое требование - изменить размер customUserControl при изменении размера TabControl с использованием разделителей в пользовательском интерфейсе.Но usercontrol не должен опускаться ниже минимальной высоты в 500 пикселей;если TabControl опускается ниже этой высоты, должна появиться прокрутка.

Я сделал следующее для этого

<WindowsControls:TabItem Header="Live Update"
                                 x:Name="tabLiveUpdate"
                                 Margin="3,0,0,0">
            <Grid>
                <Grid.RowDefinitions>
                    <RowDefinition />
                </Grid.RowDefinitions>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition />
                </Grid.ColumnDefinitions>
                <ScrollViewer BorderThickness="0"
                              Padding="1" 
                              VerticalScrollBarVisibility="Auto"
                              Width="Auto">
                        <MyControls:customUserControl 
                                       DataContext="{Binding Path=LiveUpdateVm}"
                                       MinHeight="500"/>
                    </ScrollViewer>
            </Grid>
        </WindowsControls:TabItem>

Она показывает полосу прокрутки при загрузке приложения, так как ширина запуска TabControl меньшечем 500px.Поскольку я увеличиваю размер TabControl с использованием разделителей до более чем 500px (например, до 700px), usercontrol также увеличивает его размер.И прокрутка исчезает

До этого, как я и ожидал, это нормальное поведение.

Проблема в , когда я уменьшаю TabControl обратно до некоторого уровня между текущим (700) иминимум (500), скажем, 600px, это не уменьшает пользовательский контроль.Скорее, теперь она показывает полосу прокрутки даже при высоте 600. Ожидаемое поведение - показывать полосу прокрутки, только если размер достигает 500

Спасибо

1 Ответ

0 голосов
/ 07 декабря 2011

Либо ограничьте размер Stackpanel, либо замените его на Grid.

<WindowsControls:TabItem Header="Live Update"
                                 x:Name="tabLiveUpdate"
                                 Margin="3,0,0,0">
            <Grid horizontalalignment="stretch" verticalalignment="stretch">

                <ScrollViewer BorderThickness="0"
                              Padding="1" 
                              VerticalScrollBarVisibility="Auto"
                              horizontalalignment="stretch" verticalalignment="stretch">

                        <MyControls:customUserControl 
                                       DataContext="{Binding Path=LiveUpdateVm}"
                                       MinHeight="500"
                                       horizontalalignment="stretch" verticalalignment="stretch"/>
                    </ScrollViewer>
            </Grid>
        </WindowsControls:TabItem>
...