#c# #wpf #mvvm
#c# #wpf #mvvm
Вопрос:
я хотел бы поднять значение нажатия клавиши события, когда я что-то набираю в своем текстовом поле, мои команды будут просто подсчитывать, сколько времени потребовалось для ввода
это мой xaml с текстовым полем :
<TextBlock Grid.Row="0" Grid.Column="0" Text="{Binding Texts.mydata,UpdateSourceTrigger=PropertyChanged}" FontWeight="SemiBold">
<i:Interaction.Triggers>
<i:EventTrigger EventName="KeyDown">
<cmd:EventToCommand Command="{Binding LigneAddCommand}" PassEventArgsToCommand="True" />
</i:EventTrigger>
</i:Interaction.Triggers>
</TextBlock>
на мой взгляд, модель
вот моя команда RelayCommand:
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) =>
{
//fetch data here...
timer.Stop();
};
timer.Interval = TimeSpan.FromMilliseconds(50);
timer.Start();
}
моя проблема, когда я помещаю свою точку останова в свою viewmodel, кажется, что мое событие никогда не возникает
Комментарии:
1. Регистрируются ли какие-либо ошибки привязки в
Output
окне?2. Как построена фактическая команда.
LigneAddKeyDownEventHandle
не используется в том, что мы видим.3. Почему вы опубликовали разметку
TextBlock
? И как этоLigneAddCommand
определяется и что такоеDataContext
изTextBox
?4. @prestasoc я добавил всю команду
5. Попробуйте
<i:InvokeCommandAction Command=.. CommandParamater=..
вместо<cmd:EventToCommand
. Или установитеPassEventArgsToCommand
значение false, поскольку вы не передаете аргументы команде.