WPF ListView调整大小疯狂

WPF ListView调整大小疯狂,wpf,listview,mvvm,resize,Wpf,Listview,Mvvm,Resize,我正在尝试在WPF中调整ListView的大小。我想知道如何强制ListView缩小其宽度,使其只适合其列的宽度。我使用View属性绑定了一个ListView,并添加了一些GridViewColumns,如下所示: <ListView ItemsSource="{Binding MyCollection}"> <ListView.View> <Gr

我正在尝试在WPF中调整ListView的大小。我想知道如何强制ListView缩小其宽度,使其只适合其列的宽度。我使用View属性绑定了一个ListView,并添加了一些GridViewColumns,如下所示:

                <ListView ItemsSource="{Binding MyCollection}">
                    <ListView.View>
                        <GridView>
                            <GridViewColumn Header="Name" Width={Binding NameWidth} DisplayMemberBinding="{Binding Name}"/>
                            <GridViewColumn Header="Fee" DisplayMemberBinding="{Binding Fee}"/>

                        </GridView>
                    </ListView.View>
                </ListView>
我绑定列的宽度,以便可以隐藏/取消隐藏列。当我取消隐藏列时,ListView会增长以适应新的宽度。但当我再次隐藏列时,ListView的宽度不会缩小

我尝试将ListView子类化,并调用一些命令,如

失效范围,失效度量,失效通常。但它们都不会导致ListView收缩


如果我将集合重新加载到ListView,它会收缩以适应。但我认为这并不优雅,也不是正确的做法。我穿过反射器,发现自己陷入了混乱的泥潭。有人能给我一些见解吗?

您的ListView的大小可能是由其父容器决定的,而不是由其内容决定的。例如,ListView外部的网格、StackPanel、DockPanel、Border等可能会拉伸ListView以填充其宽度

如果这不能解决问题,请在一个空窗口中使用根包装测试ListView,以排除控件中任何其他周围的XAML,并为该窗口发布整个XAML