C# 删除listview滚动条时wpf窗口宽度大小不起作用

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容器增大或缩小,特别是如果通过垂直增加窗口大小来删

我有一个使用VS2008开发的WPF项目,它使用.NET framework的3.5版。初始窗口宽度设置为680,SizeToContent仅设置为“宽度”。此窗口的网格面板中有3个ListView控件。前两个轴网都有一列指定了宽度。第三个ListView控件未指定任何列的宽度。当ListView控件最初被数据填充时,窗口的大小会正确调整。如果第三个ListView中有其他数据,则窗口会适当缩小或增大宽度。但是,如果第一个或第二个ListView容器增大或缩小,特别是如果通过垂直增加窗口大小来删除滚动条,则窗口的宽度不会正确更新。当第二个和第三个ListView控件更新时,有人对如何正确调整窗口大小有什么想法吗

以下是我的窗口和ListView控件的XAML代码:

<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控件调整了大小,可以看出它减少的空间正是垂直滚动条占用的空间。