【发布时间】:2017-07-29 07:23:38
【问题描述】:
我在应用程序退出时存储列宽并在启动时恢复它们。除非用户双击标题,否则一切正常。这会导致列宽变为double.NaN,我理解这是一个用于自动调整大小的标志。那我就有问题了。
在调查该问题时,我注意到将列宽设置为 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="Auto"代替NaN不起作用吗? -
这会阻止用户调整列的大小:stackoverflow.com/questions/181956/…
-
@TyCobb,
GridLength.Auto用于Grid的ColumnDefinition.Width。这里GridViewColumn.Width是double类型。 -
@mm8,我不想阻止用户调整大小;)仅从那个非常特别(
double.NaNlol)双击自动调整大小。跨度> -
@Sinatr 知道了。我正在查看这个问题,其中答案的宽度设置为 auto 我认为可以适合您的 让它总是自动调整大小 stackoverflow.com/questions/560581/…