【发布时间】:2017-09-13 07:36:49
【问题描述】:
我的 WPF 应用程序中有一个 ListView
<ListView Name="generatorsList" ItemsSource="{Binding GeneratorsList}" SelectionMode="Single">
<ListView.View>
<GridView>
<GridViewColumn DisplayMemberBinding="{Binding Name}">
<GridViewColumn.Header>
<GridViewColumnHeader Tag="Name">Name</GridViewColumnHeader>
</GridViewColumn.Header>
</GridViewColumn>
<GridViewColumn Header="Type" DisplayMemberBinding="{Binding Type}" />
<GridViewColumn Header="Description" DisplayMemberBinding="{Binding Description}" />
<GridViewColumn Header="Actions" Width="60">
<GridViewColumn.CellTemplate>
<DataTemplate>
//buttons
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
情况是,当窗口小于列表本身时(例如,如果描述很长,如所示示例),滚动条形成,GridView 保持不变,因此操作按钮在屏幕上不可见(用户必须拖动滚动条)。
我想在初始化时根据当前窗口宽度设置最大列宽,以便在向用户显示 ListView 时始终出现Actions 列。像那样
然后,如果用户愿意,他可以手动调整任何列的大小(因此没有设置实际的“maxwidth”,只设置了width)。
我尝试使用*,但 GridView 不知道它的孩子,所以* 在这里不起作用,auto 不是一个好选择,因为我无法设置每列所需的最大宽度,也是恒定宽度值是不需要的,因为它必须取决于可变的窗口大小(可用空间大小)。我假设我需要在代码中包含某种事件,但我不知道应该如何以正确的方式处理它。
【问题讨论】:
-
您可以始终将动作放在前面:这样,无论窗口或列宽如何,它们始终位于同一位置。
-
它会起作用,但这是一个技巧。列表在前面的操作按钮看起来不太好。如果
Name字段太长怎么办?