我已经在我的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;
}
}
绑定
SelectedItem绑定
<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));
}
}