私は典型的なMVVM構造を持っています。メインウィンドウは、いくつかのラベルとビューモデル(ContentControlとしてバインドされている)で構成されています。このビューモデルには、エントリを追加するリストボックスがあります。リストが大きくなると、ビューモデルの高さも大きくなり、アプリケーション全体の高さが大きくなります。残念ながら、サイズは画面の端で止まらず、画面の外に大きくなります。メインウィンドウでさまざまなサイズ制限をすべて試しました。ビューモデルは両方の次元で引き伸ばされています。さらに、リストボックスのスクロールバーを取得しようとしましたが、成功しませんでした(または、リストボックスが表示されているだけで、強制すると有効になりません)。
最大サイズを画面の解像度(フルスクリーン)に制限し、サイズに達したときにリストボックスのスクロールバーを取得するにはどうすればよいですか?
€:さて、ここに私のコードの関連部分があるはずです。1024x768の固定サイズを試しましたが、それでも機能しません。
MainWindow.xaml
<Window x:Class="SWS.MainWindow"
DataContext="{Binding Main, Source={StaticResource Locator}}"
Width="1024"
Height="768"
MaxWidth="1024"
MaxHeight="768">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<ContentControl Grid.Row="0" Content="{Binding CurrentViewModel}" />
</Grid>
</Window>
問題のViewModel
<UserControl x:Class="SWS.Views.ProgramView"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<DockPanel Grid.Row="0">
<Label Width="65" Content="{x:Static p:Resources.PrV_Number}" />
<Label Width="75" Content="{x:Static p:Resources.PrV_Weight}" />
<Label Width="55" Content="{x:Static p:Resources.PrV_Action}" />
<Label Content=" " />
</DockPanel>
<ListBox Grid.Row="1"
VerticalAlignment="Stretch"
ItemsSource="{Binding ParticleCollection}"
ScrollViewer.CanContentScroll="True"
ScrollViewer.VerticalScrollBarVisibility="Auto">
<ListBox.ItemTemplate>
<DataTemplate>
<DockPanel>
<TextBlock Text="{Binding ID}" Width="53" />
<TextBlock Text="{Binding Weight, StringFormat=F4}" Width="65" />
<TextBlock Text="{Binding Action}" Width="52" />
</DockPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
</UserControl>