#c# #wpf #mvvm
#c# #wpf #mvvm
Вопрос:
моя первоначальная проблема заключается в том, что я могу отличить обычную клавиатуру от сканера штрих-кодов идея: таймер проверяет, работает ли он слишком быстро, должно быть, это сканер штрих-кодов, я пробовал с помощью триггера события, но я не смог найти способ, поэтому в итоге я получаю некоторый код, я также должен убедиться, что сосредоточен на правильном элементе управления
внутренний код
private void UiTextBox_TextChanged(object sender, System.Windows.Controls.TextChangedEventArgs e)
{
var window = Window.GetWindow(this);
window.KeyDown = HandleKeyPress;
}
private void Windows_Loaded(object sender, RoutedEventArgs e)
{
var window = Window.GetWindow(this);
NewPrelevementLigne.Focus();
window.KeyDown = HandleKeyPress;
}
private void HandleKeyPress(object sender, KeyEventArgs e)
{
var cle = e.Key;
var vm = (NewPrelevementVm)this.DataContext;
vm.LigneAddCommand.Execute(null);
}
мой xaml
<wpf:UiTextBlock Grid.Row="0" Name="NewPrelevementLigne" Grid.Column="0" Text="{Binding Texts.NewPrelevementLigne,UpdateSourceTrigger=PropertyChanged}" FontWeight="SemiBold">
</wpf:UiTextBlock>
моя команда
private RelayCommand _ligneAddCommand;
public RelayCommand LigneAddCommand => _ligneAddCommand = _ligneAddCommand ?? new RelayCommand(LigneAddKeyDownEventHandle, LignaAddCanBeExecuted);
protected virtual bool LignaAddCanBeExecuted() => true;
protected virtual void LigneAddKeyDownEventHandle()
{
if (timer != null)
timer.Stop();
timer = new System.Windows.Threading.DispatcherTimer();
timer.Tick = (s, args) =>
{
var t = s.ToString();
timer.Stop();
};
timer.Interval = TimeSpan.FromMilliseconds(50);
timer.Start();
}
Комментарии:
1. Чего вы хотите достичь, выделяя это?
2. это для приложения, которому нужен ввод, этот ввод может быть выполнен пользователем, набирающим текст на клавиатуре, но он также может использовать сканер штрих-кодов. я должен изменить ситуацию, потому что, если это пользователь, он может сосредоточиться на правильном элементе управления, поскольку их несколько, но для bacodescanner мне придется заполнить другой элемент управления самостоятельно
3. Я предполагаю, что вы не можете использовать Com Reader, но должен быть Reader, имитирующий клавиатуру. Можете ли вы запрограммировать программу чтения так, чтобы она выдавала определенный префикс или суффикс?
4. нет, я не могу, потому что устройство может использоваться другим отделом
5. Разве большинство сканеров штрих-кодов не добавляют символ в начало или конец (или в оба) выходных данных? Проверьте документацию для вашего сканера. Возможно, его можно настроить таким образом.