edit: я переписываю почти весь вопрос, потому что понял, что вопрос неверный и запутанный.Я прошу прощения за это, но у вопроса были неправильные предположения, которые делали невозможным ответить.Первоначально я пытался упростить его, чтобы было легче понять, но это сделало невозможным копирование моей проблемы.
Если бы у меня было DataGrid
с MinHeight
в ScrollViewer
, я бы ожидалчто при уменьшении моего ViewPort ActualHeight
элемента будет уменьшаться до тех пор, пока он не достигнет MinHeight
, прежде чем появятся полосы прокрутки.
Вместо этого кажется, что когда совокупность высот строк в сетке данных составляет болееMinHeight
, это значение переопределяет MinHeight
Есть ли способ сделать это без ручного определения размера и тонны кода?
Пример:
<ScrollViewer VerticalScrollBarVisibility="Auto" Background="Red">
<Grid x:Name="LayoutRoot" Background="Black" HorizontalAlignment="Stretch">
<Grid.RowDefinitions>
<RowDefinition MinHeight="20"/>
<RowDefinition Height="80"/>
</Grid.RowDefinitions>
<sdk:DataGrid AutoGenerateColumns="True" Name="dataGrid1" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" MinHeight="20" />
<Rectangle Fill="Blue" Width="100" Height="80" Grid.Row="1" />
</Grid>
</ScrollViewer>
Если бы вы заполнили эту сетку несколькими строками, если вы развернули окно максимально, сетка занимает большую часть пространства и имеет пустое пространство после строк.Если вы уменьшаете его, макет убирает пустое пространство до тех пор, пока это пространство не иссякнет, тогда откроется корневой уровень ScrollViewer
, даже если MinHeight
не был достигнут.
Если вы заменитеDataGrid
с другим прямоугольником, поведение отличается (очевидно).Новый прямоугольник уменьшится до высоты 20.
Как мне добиться этого с помощью сетки?Мои требования должны иметь вложенные полосы прокрутки на моей странице SL (что я считаю неприятным, но это не в моем контроле).Идея состоит в том, что полосы прокрутки верхнего уровня являются своего рода «последним средством».