我在应用程序退出时存储列宽并在启动时恢复它们。一切工作正常,除非用户双击标题。这会导致列宽变为double.NaN
,据我了解,这是用于自动调整的标记。然后我有问题。GridViewColumn只能自动调整一次工作
在调查问题时,我注意到设置列宽为NaN
将启用自动调整大小,但只有一次。
这里是一个摄制:
<ListView x:Name="listView">
<ListView.View>
<GridView>
<GridViewColumn Header="A" Width="NaN" />
</GridView>
</ListView.View>
</ListView>
然后添加两个按钮与下面单击处理:
void button1_Click(object sender, RoutedEventArgs e) => listView.Items.Add("abcd");
void button2_Click(object sender, RoutedEventArgs e) => listView.Items.Add("ABCDEFGHIJKL");
点击button1
第一会自动调整列,以适应"abcd"
。点击button2
不会。
为什么?有没有解决方法让它始终自动调整大小或至少禁用用户双击调整大小(尝试this solution而没有成功)?
是否'WIDTH =“自动”'代替'NaN'不工作? – TyCobb
这可以防止用户能够调整列的大小:http://stackoverflow.com/questions/181956/prevent-user-from-resizing-columns-with-wpf-listview – mm8
@TyCobb,'GridLength.Auto' is对于'Grid' [[ColumnDefinition.Width]](https://msdn.microsoft.com/zh-cn/library/system.windows.controls.columndefinition.width(v = vs.110).aspx)。这里'GridViewColumn.Width'是'double'类型的。 – Sinatr