Я работаю над проектом WPF MVVM. DataGrid показывает записи, найденные службой. В каждой строке есть кнопка, которая выполняет действие с выбранной записью.
public class ReferenceDossier
{
}
XAML
<GroupBox>
<Grid>
<StackPanel>
<TextBox>
<TextBox.InputBindings>
<KeyBinding Key="Enter" Command="{Binding SearchCommand}"/>
</TextBox.InputBindings>
</TextBox>
</StackPanel>
</Grid>
</GroupBox>
<GroupBox>
<Grid>
<StackPanel>
<DataGrid ItemsSource="{Binding ReferenceDossiers}">
<DataGrid.Columns>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Command="{Binding Command}"
CommandParameter="{Binding}">>
<iconPacks:PackIconFontAwesome Kind="PlusCircle" Foreground="#FF94bf00"/>
</Button>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</StackPanel>
</Grid>
</GroupBox>
Когда я выполняю поиск по ключевому слову в TextBox
и нажимаю Enter, он выполняет расчет и показывает результаты в DataGrid
.
Что я хочу закодировать:
Если пользователь снова нажимает ENTER (после записи, показанной на DataGrid
), и пользователь еще не выбрал строку, Command
из Button
первой строки должен быть вызван, не важно, сколько записей в сетке, первый должен быть выбран.
Если пользователь выбирает строку в DataGrid
и нажимает ENTER, вызывается Command
из Button
этой строки.
Если запись нулевая, ничего не делать.
Цель - сократить время выбора в графическом интерфейсе.
Но я не могу найти способ сделать это с помощью подхода MVVM.
При некоторых попытках, когда я нажимаю клавишу ВВОД после нажатия ключевого слова, TextBox
всегда фокусируется. Я снова нажимаю ENTER, он повторяет расчет.