C# 删除listview滚动条时wpf窗口宽度大小不起作用
我有一个使用VS2008开发的WPF项目,它使用.NET framework的3.5版。初始窗口宽度设置为680,SizeToContent仅设置为“宽度”。此窗口的网格面板中有3个ListView控件。前两个轴网都有一列指定了宽度。第三个ListView控件未指定任何列的宽度。当ListView控件最初被数据填充时,窗口的大小会正确调整。如果第三个ListView中有其他数据,则窗口会适当缩小或增大宽度。但是,如果第一个或第二个ListView容器增大或缩小,特别是如果通过垂直增加窗口大小来删除滚动条,则窗口的宽度不会正确更新。当第二个和第三个ListView控件更新时,有人对如何正确调整窗口大小有什么想法吗 以下是我的窗口和ListView控件的XAML代码:C# 删除listview滚动条时wpf窗口宽度大小不起作用,c#,wpf,xaml,visual-studio-2008,listview,C#,Wpf,Xaml,Visual Studio 2008,Listview,我有一个使用VS2008开发的WPF项目,它使用.NET framework的3.5版。初始窗口宽度设置为680,SizeToContent仅设置为“宽度”。此窗口的网格面板中有3个ListView控件。前两个轴网都有一列指定了宽度。第三个ListView控件未指定任何列的宽度。当ListView控件最初被数据填充时,窗口的大小会正确调整。如果第三个ListView中有其他数据,则窗口会适当缩小或增大宽度。但是,如果第一个或第二个ListView容器增大或缩小,特别是如果通过垂直增加窗口大小来删
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:AP2"
x:Class="AP2.MainWindow"
x:Name="LobbyWindow"
Title="Lobby"
Height="480"
mc:Ignorable="d"
SizeToContent="Width"
MinWidth="680"
MinHeight="480"
SizeChanged="LobbyWindow_SizeChanged"
Loaded="LobbyWindow_Loaded"
Closing="LobbyWindow_Closing"
StateChanged="LobbyWindow_StateChanged">
<Window.Background>
<LinearGradientBrush EndPoint="0.5,1"
StartPoint="0.5,0">
<GradientStop Color="#FF434D7A"
Offset="0" />
<GradientStop Color="#FF180CFA"
Offset="1" />
</LinearGradientBrush>
</Window.Background>
...
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="0.064*" />
<RowDefinition Height="0.936*" />
</Grid.RowDefinitions>
<!-- Define the selected table label. -->
<Label x:Name="SelTableLabel"
Margin="1,-5,0,0"
Content="Table"
FontSize="11"
Foreground="#FF000000"
Background="#FFFFFFFF"
Grid.Row="0"
Grid.Column="2"
FontFamily="Georgia"
FontWeight="Bold"
VerticalAlignment="Bottom" />
<ListView x:Name="ListView1"
ItemContainerStyle="{StaticResource alternatingListViewItemStyle}"
AlternationCount="2"
SelectionChanged="ListView1_SelectionChanged"
Grid.Row="1"
Grid.Column="0"
SelectionMode="Multiple"
ItemsSource="{Binding ElementName=LobbyWindow, Path=ListCollection1}">
<ListView.View>
<GridView>
<GridViewColumn DisplayMemberBinding="{Binding Game}">
<GridViewColumnHeader Content="Game"
FontWeight="Bold" />
</GridViewColumn>
<GridViewColumn DisplayMemberBinding="{Binding Stakes}">
<GridViewColumnHeader Content="Stakes"
FontWeight="Bold" />
</GridViewColumn>
<GridViewColumn Width="30"
DisplayMemberBinding="{Binding Seats}">
<GridViewColumnHeader Content="Seats"
FontWeight="Bold" />
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
<ListView x:Name="ListView2"
ItemContainerStyle="{StaticResource alternatingListViewItemStyle}"
AlternationCount="2"
Grid.Row="1"
Grid.Column="1"
SelectionChanged="ListView2_SelectionChanged"
SelectionMode="Single"
ItemsSource="{Binding ElementName=LobbyWindow, Path=ListCollection2}">
<ListView.View>
<GridView>
<GridViewColumn Width="90"
x:Name="TableName"
DisplayMemberBinding="{Binding TableName}">
<GridViewColumnHeader Content="Table"
Width="90"
FontWeight="Bold"
HorizontalAlignment="Left" />
</GridViewColumn>
<GridViewColumn DisplayMemberBinding="{Binding Stakes}">
<GridViewColumnHeader Content="Stakes"
FontWeight="Bold" />
</GridViewColumn>
<GridViewColumn DisplayMemberBinding="{Binding NumPlayers}">
<GridViewColumnHeader Content="Players"
FontWeight="Bold" />
</GridViewColumn>
<GridViewColumn DisplayMemberBinding="{Binding Speed}">
<GridViewColumnHeader Content="Speed"
FontWeight="Bold" />
</GridViewColumn>
<GridViewColumn DisplayMemberBinding="{Binding HandsPerHour}">
<GridViewColumnHeader Content="H/Hr"
FontWeight="Bold" />
</GridViewColumn>
<GridViewColumn DisplayMemberBinding="{Binding AvgPotSize}">
<GridViewColumnHeader Content="Avg Pot"
FontWeight="Bold" />
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
<ListView x:Name="ListView3"
ItemContainerStyle="{StaticResource alternatingListViewItemStyle}"
AlternationCount="2"
Grid.Row="1"
Grid.Column="2"
SelectionMode="Single"
ItemsSource="{Binding ElementName=LobbyWindow, Path=ListCollection3}">
<ListView.View>
<GridView>
<GridViewColumn DisplayMemberBinding="{Binding Player}">
<GridViewColumnHeader Content="Player"
FontWeight="Bold" />
</GridViewColumn>
<GridViewColumn DisplayMemberBinding="{Binding City}">
<GridViewColumnHeader Content="City"
FontWeight="Bold" />
</GridViewColumn>
<GridViewColumn DisplayMemberBinding="{Binding Chips}">
<GridViewColumnHeader Content="Chips"
FontWeight="Bold" />
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
</Grid>
...
您是否尝试过将网格中所有三个Columdefinition的宽度都设置为“自动”,而不是“*”。只是尝试过而已。尝试了一个小实验,并在初始化和显示ListView2后将其中一列设置为长字符串。当宽度设置为“*”时,它会正确调整控件和窗口的大小。设置为“自动”时,列宽设置不正确。似乎它唯一无法正确设置窗口宽度的时间是当它去掉垂直滚动条时。顺便说一下,当垂直滚动条消失时(手动增加窗口长度),ListView控件调整了大小,可以看出它减少的空间正是垂直滚动条占用的空间。