У меня есть ListView (завернутый в ScrollViewer), который изменяет размеры, если элементы inseretd превышают видимую область до тех пор, пока не достигнут максимальная высота родителей.понимание WPF Layout
ListView встроен следующим образом.
<Window ... SizeToContent="Height">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="2*"/>
<RowDefinition Height="*" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="3*" />
<ColumnDefinition Width="2*" />
</Grid.ColumnDefinitions>
<ScrollViewer x:Name="MyScrollViewer" Grid.Row="0" Grid.Column="0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<ListView Name="MyListView"
ItemsSource="{Binding Path=RetrievalStringResults, Mode=OneWay}"
IsSynchronizedWithCurrentItem="True" />
</ScrollViewer>
<DockPanel Grid.Row="0" Grid.Column="1">
...
</DockPanel>
<Expander Grid.Row="1" Grid.ColumnSpan="2">
<DockPanel Height="150" HorizontalAlignment="Stretch">
<TextBox DockPanel.Dock="Top" />
</DockPanel>
</Expander>
<DockPanel Grid.Row="2" Grid.ColumnSpan="2">
... some buttons
</DockPanel>
</Grid>
</Window>
Я использовал SizeToContent, потому что я получил текстовое поле на дне, завернутые в расширитель, который будет расширенным по требованию, а на самом деле поэтому мое главное окно необходимо изменить. Это на самом деле отлично работает.
Проблема заключается в том, что высота ListView не является максимальной высотой при запуске, поэтому я получил эффект «автоматического изменения размера».
Как установить высоту ListView на максимальную высоту родителей, чтобы избежать этого эффекта?
Другая, более общая проблема. Я думаю, что избежать статических параметров компоновки (статические значения для высоты/ширины) приятно, но я понял, что теряю контроль над элементами управления пользовательского интерфейса.
Я узнал, меняя размеры моего главного окна вручную по высоте, он «прыгает» на 150 высотой DockPanel, обернутой расширителем на дне, во всяком случае, чтобы этого избежать?
Какова лучшая схема динамического интерфейса? Я исследовал DockPanel более динамично в определении размеров, чем окружающая среда, чем StackPanel. Но я думаю, это не все.
Пожалуйста, постарайтесь задать один вопрос одновременно. – svick