Установить фокус на строку в сетке данных - WPF MVVM - PullRequest
0 голосов
/ 01 марта 2019

Я реализовал команду поиска в своем приложении 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));
        }
    }
...