Кнопка сохранения DataGrid и CanExecute - PullRequest
2 голосов
/ 26 мая 2011

У меня есть сетка данных и кнопка сохранения в XAML.У меня есть ObservableCollection, привязанная к сетке данных.

Если я добавлю / удалю строку в сетке данных, я смогу включить кнопку «Сохранить», чтобы позволить пользователю сохранять записи.Однако NotifyCollectionChangedAction в ObservableCollection не может перехватить «правку» (т. Е. Изменения значения).Поэтому я хочу вручную активировать кнопку сохранения, когда вызывается событие currentcellchanged таблицы данных (т.е. установить e.CanExecute = true).

Так как вы не можете установить enable = true, как в WinForms, в WPF есть CanExecuteи Выполнение привязки команды.

В моем XAML:

</UserControl.Resources>

    <UserControl.CommandBindings>

            <CommandBinding Command="Save" Executed="Save_Executed" CanExecute="Save_CanExecute">
            </CommandBinding>

    </UserControl.CommandBindings>

 <Button Grid.Row="4" Content="Save" Command="Save" HorizontalAlignment="Right" Margin="5" Name="saveButton" VerticalAlignment="Center" Width="75" >

Код:

private void Save_Executed(object sender, ExecutedRoutedEventArgs e)
        {

        }
 private void Save_CanExecute(object sender, CanExecuteRoutedEventArgs e)
        {
            e.CanExecute = businessContractorViewModel != null && businessContractorViewModel.Entry != null;
        }

 private void businessDataGrid_CurrentCellChanged(object sender, EventArgs e)
        {
//?? how to set savebutton e.canexecute = true?

        }

1 Ответ

0 голосов
/ 26 мая 2011

я добавил триггер, когда я закончу редактирование ячейки, установлю bool Edited = true и postback, кнопка сохранения поймает изменение и сама включит его.

я не знаю, будет ли это лучше, но у меня это работает.

private void Save_CanExecute(object sender, CanExecuteRoutedEventArgs e)
        {
            e.CanExecute = Edited;
        }

 private void businessDataGrid_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
        {
            Edited = true;
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...