#wpf #xaml #keyboard-shortcuts #devexpress
#wpf #xaml #сочетания клавиш #devexpress
Вопрос:
Не удается назначить SHIFT Удалить набор клавиш элементу панели DevExpress в WPF. Есть ли какие-либо ограничения на это или я делаю это неправильно?
<dxb:BarButtonItem
x:Name="btnDelete"
Command="{Binding BtnDelete_Command}"
CommandParameter="{Binding ElementName=view}"
KeyGesture="SHIFT Delete"
Content="Delete" />
Ответ №1:
Вот код, который я попробовал:
<dxb:BarManager>
<dxb:BarManager.Items>
<dxb:BarButtonItem x:Name="btnDelete" Command="{Binding BtnDelete_Command}" CommandParameter="{Binding ElementName=view}" KeyGesture="SHIFT Delete" Content="Delete" />
</dxb:BarManager.Items>
<dxb:BarManager.Bars>
<dxb:Bar>
<dxb:Bar.ItemLinks>
<dxb:BarButtonItemLink BarItemName="btnDelete"/>
</dxb:Bar.ItemLinks>
</dxb:Bar>
</dxb:BarManager.Bars>
<StackPanel>
<Button Content="sdgsdg" />
<TextBox x:Name="view"/>
</StackPanel>
</dxb:BarManager>
public partial class MainWindow : Window {
public ICommand BtnDelete_Command { get; set; }
public MainWindow() {
BtnDelete_Command = new MyCommand();
DataContext = this;
InitializeComponent();
}
}
public class MyCommand : ICommand {
public bool CanExecute(object parameter) {
return true;
}
public event EventHandler CanExecuteChanged {
add { CommandManager.RequerySuggested = value; }
remove { CommandManager.RequerySuggested -= value; }
}
public void Execute(object parameter) {
MessageBox.Show(parameter.GetType().ToString());
}
}
Здесь все работает правильно. Если редактор не сфокусирован, команда выполняется. Если редактор сфокусирован, он сам обработал эту комбинацию клавиш и, следовательно, команда не выполняется.
Комментарии:
1. Спасибо за ответ.. Это кажется правильным. И как я могу заставить этот жест работать, когда текстовое поле сфокусировано? (извините, я новичок в wpf)