Перезапись записи после поиска -MVVM WPF
У меня есть View ConfigRole, который содержит DataGrid с двумя столбцами: View и IsEnabled(флажок), а также область поиска.
и кнопка сохранить его работает правильно, я делаю все виды, которые я хочу IsEnabled и я сохраняю его : например:
Показывает: наиболее удивительных изображений в Интернете[^]
И когда я использую поле поиска, у меня есть правильный результат для всех представлений, которые я ищу в нем,например, я пишу "клиент" в поле поиска ,у меня есть все представления с ключом "клиент".:
Показывает: наиболее удивительных изображений в Интернете[^]
Моя проблема в том ,что когда я делаю кнопку Сохранить после поиска, все флажки (IsEnabled в первом представлении будут ложными !! только те представления, которые я включаю в представлении поиска, сохраняются !Показывает: наиболее удивительных изображений в Интернете[^]
Как я могу это исправить?
Спасибо,
Что я уже пробовал:
Язык XAML ConfigRole:
<pre> <TextBox x:Name="textBox" Text="{Binding ViewName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, NotifyOnValidationError=True ,TargetNullValue=''}" /> <DataGrid x:Name="dataGrid" SelectedItem="{Binding SelectedView}" ItemsSource="{Binding ViewList}" CanUserAddRows="False" AlternationCount="2" AlternatingRowBackground="Blue" AutoGenerateColumns="False" > <DataGrid.Columns> <DataGridTextColumn Header="View" Binding="{Binding ViewCode}" IsReadOnly="True" /> <DataGridTemplateColumn Header="Is Enabled" Width="Auto"> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <CheckBox IsChecked="{Binding IsEnabled, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> </DataGrid.Columns> </DataGrid> <Button Command="{Binding SaveRole}" Visibility="{Binding Path=ShowSaveButton, Converter={StaticResource BoolToVis}}" CommandParameter="{Binding ElementName=ConfigureRole}"/> </Grid>
ConfigRoleViewModel:
<pre> private ObservableCollection<ViewRoleMapClass> _viewList; private MiniTasServicesClient WCFclient = new MiniTasServicesClient(); public int test; public ConfigRoleModel(int RoleId,ObservableCollection<UserRoleClass> roleList) { test = RoleId; _viewList = new ObservableCollection<ViewRoleMapClass>(WCFclient.getViewRoleMapsByRole(RoleId)); saveRole = new RelayCommand<Window>(configRole); } private RelayCommand<Window> saveRole; public RelayCommand<Window> SaveRole { get { return saveRole; } } //all list of Views public ObservableCollection<ViewRoleMapClass> ViewList { get { return _viewList; } set { _viewList = value; OnPropertyChanged("ViewList"); } } //the Function of the Button Save private void configRole(Window window) { List<ViewRoleMapClass> listViewRoleMap = new List<ViewRoleMapClass>(); foreach (ViewRoleMapClass view in ViewList) { if (view.IsEnabled) listViewRoleMap.Add(view); } int resultUpdate = WCFclient.updateViewRoleMap(listViewRoleMap, test); if (resultUpdate == 0) { string sCaption = "Save notification"; string sInformation = "Save operation is performed successfully"; MessageBoxButton btnMessageBox = MessageBoxButton.OK; MessageBoxImage icnMessageBox = MessageBoxImage.Information; MessageBoxResult rsltMessageBox = MessageBox.Show(sInformation, sCaption, btnMessageBox, icnMessageBox); } _refreshList(); } //Search private string _viewName; public string ViewName { get { return _viewName; } set { _viewName = value; OnPropertyChanged("ViewName"); _viewList = searchByCriteria(ViewName); OnPropertyChanged("ViewList"); } } private ObservableCollection<ViewRoleMapClass> searchByCriteria(string _viewName) { List<ViewRoleMapClass> resultSearch=new List<ViewRoleMapClass>(); _viewList = new ObservableCollection<ViewRoleMapClass>(WCFclient.getViewRoleMapsByRole(test)); if (_viewName != null) { resultSearch = _viewList.Where(c => c.ViewCode.ToLower().Contains(_viewName.ToLower())).ToList(); } return new ObservableCollection<ViewRoleMapClass>(resultSearch); }