1 - В окнах форм столбцы жестко запрограммированы в ListView, в WPF нет гарантии, что они вообще будут, поэтому нет смысла включать эту горячую клавишу, которая будет работать, только если один конкретный ListView.View
б.
2 - часть «применимо ко всем» может быть немного обходной с поведением, но вот метод поведения:
<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);
}
}
Вы можете определить глобальный неявный стиль, который в значительной степени делает то же самое в событии Loaded
элемента управления, поэтому вам не нужно вручную назначать поведение.