在典型的Windows窗体列表视图中,快捷键 Ctrl + Shift + + 将网格中的所有列调整为“自动” “size(如果你双击列标题中的resize句柄,就会出现这种情况)。
在包含列表视图的WPF应用程序中,相同的快捷方式不起作用。
答案 0 :(得分:1)
1 - 在Windows窗体中,列被硬编码到ListView中,在WPF中无法保证甚至会有任何内容,因此包含该热键没有多大意义,只有当一个特定的{{1}时才会有效使用。
2 - 应用于所有部分可能有点环绕行为,但这里是行为方法:
ListView.View
<ListView>
<i:Interaction.Behaviors>
<b:AutoSizeColumnsKeyboardShortcutBehavior />
</i:Interaction.Behaviors>
<!-- ... -->
</ListView>
您可以定义一个全局隐式样式,它几乎与控件的public class AutoSizeColumnsKeyboardShortcutBehavior : Behavior<ListView>
{
public class AutoSizeColumnsCommand : ICommand
{
public bool CanExecute(object parameter)
{
var target = parameter as ListView;
if (target == null) return false;
var view = target.View as GridView;
return view != null;
}
public event EventHandler CanExecuteChanged;
public void Execute(object parameter)
{
var target = parameter as ListView;
var view = target.View as GridView;
foreach (var column in view.Columns)
{
column.Width = double.NaN;
}
}
}
protected override void OnAttached()
{
base.OnAttached();
var command = new AutoSizeColumnsCommand();
var keybinding = new KeyBinding(command,
new KeyGesture(Key.OemPlus, ModifierKeys.Control | ModifierKeys.Shift))
{
CommandParameter = this.AssociatedObject
};
this.AssociatedObject.InputBindings.Add(keybinding);
}
}
事件完全相同,这样您就不需要手动分配行为。