powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Запрос на удаление строки в DataGrid
6 сообщений из 6, страница 1 из 1
Запрос на удаление строки в DataGrid
    #38891343
UncleJo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У DataGrid есть небольшая проблема, при удалении строки он не запрашивает подтверждения. Самый простой вариант:

private void dataGrid_PreviewKeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Delete)
{
if (MessageBox.Show("delete?", "", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes)
{
dataGrid.CanUserDeleteRows = true;
}
else
{
dataGrid.CanUserDeleteRows = false;
}
}
}

Но здесь есть проблема. При нажатии клавиши Del в режиме редактирования ячейки запрос на удаление так же запрашивается?

Как вариант запрашивать: ((DataGrid)sender).CurrentCell, преобразовывать к DataGridCell и читать свойство IsEditing, но CurrentCell возвращает DataGRidCellInfo и к DataGridCell оно не преобразовывается.
...
Рейтинг: 0 / 0
Запрос на удаление строки в DataGrid
    #38891375
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UncleJo,

просто добавь воды:
Код: xml
1.
2.
3.
            <DataGrid.CommandBindings>
                <CommandBinding Command="ApplicationCommands.Delete" CanExecute="CommandBinding_CanExecute"/>        
            </DataGrid.CommandBindings>


Код: c#
1.
2.
3.
4.
5.
6.
        private void CommandBinding_CanExecute(object sender, CanExecuteRoutedEventArgs e)
        {
            var result = MessageBox.Show("You a sure?", "Question", MessageBoxButton.YesNo, MessageBoxImage.Question);
            e.CanExecute = result == MessageBoxResult.Yes;
            e.Handled = true;
        }
...
Рейтинг: 0 / 0
Запрос на удаление строки в DataGrid
    #38891452
UncleJo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtes, Спасибо в следующем проекте так и сделаю. Здесь удаление должно происходить в обработчике событий.
...
Рейтинг: 0 / 0
Запрос на удаление строки в DataGrid
    #38891484
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UncleJo,

все запросы и прочее должны вызываться из View.
а как вам надо?
...
Рейтинг: 0 / 0
Запрос на удаление строки в DataGrid
    #38891491
UncleJo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtes,
Обработчик нажатия клавиши Del при выборе строки - удаления строки,
при редактировании ячейки редактирование TextBox или еще чего.
Понятно, что не MVVMЮ, но это будет в следующем проекте.

В принципе, я уже нашел решение. Сейчас выложу.
...
Рейтинг: 0 / 0
Запрос на удаление строки в DataGrid
    #38891496
UncleJo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UncleJo, На решение меня навел следующий код:
DependencyObject dep = (DependencyObject)e.OriginalSource;
while ((dep != null) && !(dep is DataGridCell))
{
dep = VisualTreeHelper.GetParent(dep);
}
if (((DataGridCell)dep).IsEditing)
{
MessageBox.Show("Редактируется Ячейка");
}
else
{
MessageBox.Show("Строка выделена");
}
Так вот если ячейка не находится в режиме вставки тип dep DataGridCell, если в режиме вставки, то надо пройти по дереву и прочитать поле IsEditing. По мне, достаточно проверить тип e.OriginalSource, если DataGridCellто режима редактирования ячейки нет.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Запрос на удаление строки в DataGrid
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]