Я реализовал команду поиска в своем приложении MVVM.
Когда обновится выбранная строка в сетке данных.Проблема в том, что фокус для этой строки не обновляется.
Сетка данных также не будет прокручивать и строку.
Метод
private void Search(string userNameToSearch)
{
var SearchedUser = Users.FirstOrDefault(user => user.UserName ==
userNameToSearch.ToLower());
if (SearchedUser == null)
MessageBox_Show(null, "User Not Found", "Search");
SelectedUser = SearchedUser;
}
Команда
RelayCommand _searchCommand;
public ICommand SearchCommand
{
get
{
if (_searchCommand == null)
{
_searchCommand = new RelayCommand(param => Search((string)param));
}
return _searchCommand;
}
}
Привязки
Привязка выбранного элемента
<DataGrid Grid.Row="1" Margin="10,5,10,10" ItemsSource="{Binding Users}" Name="UsersDataGrid" IsReadOnly="True" AutoGenerateColumns="False" SelectedItem="{Binding SelectedUser, Mode=TwoWay}" >
Привязка кнопки поиска
<Button Command="{Binding SearchCommand}" CommandParameter="{Binding ElementName=SearchBox, Path=Text}" Content ="Search" Width="50"></Button>
Это подход MVVM, означающий, что я не могу напрямую получить доступ к Datagrid.
Редактировать 1: Добавлен selectedUser Только для полноты.
public UserDetailsModel SelectedUser
{
get { return _selectedUser; }
set
{
_selectedUser = value;
OnPropertyChanged(nameof(SelectedUser));
}
}