我想创建一个 ListView,它有两列固定宽度和第三列来填充剩余空间。所以像这样:
<ListView>
<ListView.View>
<GridView>
<GridViewColumn Header="Name" Width="*" />
<GridViewColumn Header="Age" Width="50" />
<GridViewColumn Header="Gender" Width="50" />
</GridView>
</ListView.View>
</ListView>
问题是我找不到方法来获得Name
列填充剩余空间,将宽度设置为*
不起作用。看起来有一种方法可以做到这一点值转换器 http://social.msdn.microsoft.com/forums/en-US/wpf/thread/3ee5696c-4f26-4e30-8891-0e2f95d69623/,但似乎应该有一个更简单的方法。与 DataGrid 控件一样,您可以使用以下命令指定列的宽度*
s.
我试图实现同样的目标,但后来决定我希望我的 ListView 列消耗 ListView 的一定百分比,其结果是所有列消耗一部分空间,并且所有空间都消耗在 ListView 中。您可以将其设置为最后一列的任意百分比,以直接实现“填充最后一列的剩余空间”目标。
我发现这个方法相当强大和可靠(即使在调整大小时!)所以我想我可以分享。
对于这个例子,我的 ListView 有四列。您所需要的只是注册SizeChanged
ListView 中的事件具有以下事件处理程序:
private void ProductsListView_SizeChanged(object sender, SizeChangedEventArgs e)
{
ListView listView = sender as ListView;
GridView gView = listView.View as GridView;
var workingWidth = listView.ActualWidth - SystemParameters.VerticalScrollBarWidth; // take into account vertical scrollbar
var col1 = 0.50;
var col2 = 0.20;
var col3 = 0.15;
var col4 = 0.15;
gView.Columns[0].Width = workingWidth*col1;
gView.Columns[1].Width = workingWidth*col2;
gView.Columns[2].Width = workingWidth*col3;
gView.Columns[3].Width = workingWidth*col4;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)