WPF: запуск изменения размера содержимого с помощью GridSplitter
Я пытаюсь заставить сетку / расширитель пересмотреть, нужна ли ей полоса прокрутки, поскольку она показывает пустоту.
Я использую этот макет:
<Grid>
<toolstrip /> <!-- fixed height row -->
<Scrollviewer> <!-- * height -->
<Grid> <!-- all rows are 'Auto' height -->
<Expander />
<Expander> <!-- this one stretches far too high -->
<WPF Toolkit: DataGrid />
<Expander>
<GridSplitter/>
<Expander />
<Grid>
</Scrollviewer>
<stackpanel /> <!-- fixed height row -->
<Grid>
DataGrid (WPF Toolkit) привязывается к свойству при инициализации окна. Проведя некоторые исследования, я понял, что когда окно инициализируется, столбцы в GridView начинаются с ширины около 10 пикселей, затем добавляется содержимое, а затем они изменяются в зависимости от размеров в XAML (все с использованием звездных ширин - например: 2*). Это приводит к тому, что размер сетки увеличивается примерно в 6 раз по отношению к высоте, необходимой для отображения окна, затем она не возвращается, и единственный способ увидеть, что находится внизу окна, это прокрутить или переместить GridSplitter. вернитесь туда, где это должно быть, и измените размер окна. Я не установил свойства VerticalAlignment ни для чего.
До сих пор я пробовал все следующие методы InvalidateArrange(), InvalidateVisual();, InvalidateMeasure() и UpdateLayout() для расширителя проблемы, а также InvalidateArrange(), InvalidateScrollInfo(), InvalidateVisual() и UpdateLayout() в сетке. выше этого, но это не будет сокращаться назад.
Есть ли способ, которым я могу заставить его сократить ширину столбцов в DataGrid?
1 ответ
Попробуйте установить эти свойства в ScrollViewer:
<ScrollViewer CanContentScroll="True"
VerticalScrollBarVisibility="Auto"
HorizontalScrollBarVisibility="Auto">
... content ...
</ScrollViewer>
Если это не сработает, можете ли вы предоставить более точное представление вашего XAML. Также может помочь подробное изучение ScrollViewer.