ListView(ScrollViewerでラップされています)を取得しました。これは、要素のinseretdが親の最大高さに達するまで可視領域を超えた場合にサイズを変更します。WPFのレイアウトを理解する
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の高さを親の高さの最大値に設定するにはどうすればよいですか?
さらに一般的な問題です。私は静的なレイアウトパラメータ(高さ/幅の静的な値)を避けるのがいいと思いますが、私は自分のUIコントロールに対するコントロールを失っていると感じています。
私のメインウィンドウの高さを手動で高さを変更して認識しましたが、これを避けるためにExpanderがラップしたDockPanelの高さ150で "ジャンプ"します。
ダイナミックUIレイアウトではどのようなものがありますか?私はStackPanelよりも周辺のコンロールにサイジングする際に、より動的にDockPanelを調べました。しかし、私はそれがすべてではないと思います。
一度に1つ質問してください。 – svick