powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Отслеживание изменений в DataGrid
25 сообщений из 88, страница 2 из 4
Отслеживание изменений в DataGrid
    #39728586
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eld HaspЯ имел ввиду, конкретно, вот такой нюанс. Новая строка в DataGrid существует только в нём. В источнике её нет. Поэтому по источнику не получится определить были изменения или нет. В идеале, мне нужно получить такое поведение. При любом изменении в новой строке DG она сразу должна добавиться в источник.
Отдельный диалог для ввода новой строки эту проблему вполне решает. И я по возможности стараюсь именно так и делать.
Eld HaspВ данном случае мне надо определить были ли внесены изменения в список, для этого мне надо сравнить список из DG и список в модели. Любое расхождение между списками: разное количество элементов, разная их последовательность, любое изменение в одном из свойств. Для последнего я и переопределил Equals. Если такой подход не верен, то как лучше сделать?
Ну, Equals сам по себе описанную задачу не решает, он просто проверяет эквивалентность экземпляров классов.
Здесь возникают такие вопросы:
1) Откуда в DG взялся отдельный список? Вы биндите к DG отдельную копию?
2) Если списки различаются - что присходит дальше?
3) Допустим, в списке отображаются фамилия и имя пользователя. В последней строке был Петров Вася. Эту последнюю строку удалили, добавили новую, и снова ввели "Петров" и "Вася". Различия есть? Или нет?
4) Поскольку Equals и GetHashCode зависят от пользовательского ввода, то вполне возможны дублированные записи - т.е. несколько разных элементов списка, которые будут эквивалентны. Что планировалось делать в таком случае?
Eld Haspradgridview - посмотрю, что за зверь. А как довести "компонент штатный до своих хотелок" - не знаю. То ли "хотелок" больше чем возможности штатного элемента, то ли мои возможности и умения значительно ниже моих "хотелок"
А вы озвучте хотелки. У стандартного грида есть и группировки, можно прикрутить и фильтрацию, и, возможно, некий наименьший общий знаменатель вполне устроит (меня вот он в 90% случаев устраивает).
Я лично не работал с телериковским гридом, но в случае с гридом от девэкспресса за его мегафункционал всегда приходилось расплачиваться тяжеловесностью UI - просто на уровне отклика UI.
...
Рейтинг: 0 / 0
Отслеживание изменений в DataGrid
    #39728589
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123Eld Hasp,
Мрак.
Короче, ты жить богато и с зарплатой хочешь?
Тогда дальнейшее твое творчество уже наносит вред развитию программиста.
Выкинь xml и этот топик будет не нужен.
Удачи!
Имхо.Это не кому-то на заказ. Просто появилась возможность (в основном время) заняться освоением WPF и C#. Чтобы не в пустую из головы придумывать задачи, посмотрел, что чуток может помочь в работе. Создаю приложение и учусь на этом.
Пока хочу хоть более-менее WPF и C# освоить. До БД пока... токо смотрю в ту сторону.
...
Рейтинг: 0 / 0
Отслеживание изменений в DataGrid
    #39728594
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123Eld HaspОни могут не помещаться все на видимом поле. И пользователь может передвинуть их вверх вниз в зависимости от того, что ему нужно видеть в первую очередь.а) скроллинг б) доп. Колонка и свойство Очередность.Скроллинг - это понятно. Он и так будет.
А вот доп. Колонка - зачем это пользователю? Ему просто надо передвинуть строки вверх-вниз. Доп колонка для него лишнее. А при сохранении всё равно это преимущества не даст, так данные (в доп. колонке) всё рано изменились.
...
Рейтинг: 0 / 0
Отслеживание изменений в DataGrid
    #39728599
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eld HaspА вот доп. Колонка - зачем это пользователю?ты сам ввел в Модель важное для ТЕБЯ свойство очередность. Разве нет?
...
Рейтинг: 0 / 0
Отслеживание изменений в DataGrid
    #39728601
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныОтдельный диалог для ввода новой строки эту проблему вполне решает. И я по возможности стараюсь именно так и делать.+1
...
Рейтинг: 0 / 0
Отслеживание изменений в DataGrid
    #39728604
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eld HaspСоздаю приложение и учусь на этом.делая свой грид но не зная субд?
Это уже перекос будет.
Как для двоих сразу юзверей сделать программу на xml без субд? Без транзакции?
...
Рейтинг: 0 / 0
Отслеживание изменений в DataGrid
    #39728614
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сон Веры ПавловныEld HaspЯ имел ввиду, конкретно, вот такой нюанс. Новая строка в DataGrid существует только в нём. В источнике её нет. Поэтому по источнику не получится определить были изменения или нет. В идеале, мне нужно получить такое поведение. При любом изменении в новой строке DG она сразу должна добавиться в источник.
Отдельный диалог для ввода новой строки эту проблему вполне решает. И я по возможности стараюсь именно так и делать.
Да, это одно из решений. Так тоже делал. Но мне кажется, "красивее" и удобнее делать это в DataGrid - если возможно, конечно.
Сон Веры ПавловныEld HaspВ данном случае мне надо определить были ли внесены изменения в список, для этого мне надо сравнить список из DG и список в модели. Любое расхождение между списками: разное количество элементов, разная их последовательность, любое изменение в одном из свойств. Для последнего я и переопределил Equals. Если такой подход не верен, то как лучше сделать?
Ну, Equals сам по себе описанную задачу не решает, он просто проверяет эквивалентность экземпляров классов.
Здесь возникают такие вопросы:
1) Откуда в DG взялся отдельный список? Вы биндите к DG отдельную копию?
2) Если списки различаются - что присходит дальше?
3) Допустим, в списке отображаются фамилия и имя пользователя. В последней строке был Петров Вася. Эту последнюю строку удалили, добавили новую, и снова ввели "Петров" и "Вася". Различия есть? Или нет?
4) Поскольку Equals и GetHashCode зависят от пользовательского ввода, то вполне возможны дублированные записи - т.е. несколько разных элементов списка, которые будут эквивалентны. Что планировалось делать в таком случае?
1) Да - список в DG это копия списка в модели. Сохранить данные из View можно только явно - нажав на кнопку.
2) Если списки различаются, то становится активной кнопка "Сохранить" и пользователь может сохранить данные. Так же при переходе к другому списку (в данном примере этот функционал не реализован) пользователю выводится предупреждение, что он может потерять данные.
3) По алгоритму это будут считаться одинаковыми списками.
4) Они так и будут дублироваться, пользователя в этом не ограничиваю. Возможно, потом, проверю при пробной эксплуатации, сделаю предупреждение об этом, но ограничивать не буду.
Сон Веры ПавловныEld Haspradgridview - посмотрю, что за зверь. А как довести "компонент штатный до своих хотелок" - не знаю. То ли "хотелок" больше чем возможности штатного элемента, то ли мои возможности и умения значительно ниже моих "хотелок"
А вы озвучте хотелки. У стандартного грида есть и группировки, можно прикрутить и фильтрацию, и, возможно, некий наименьший общий знаменатель вполне устроит (меня вот он в 90% случаев устраивает).
1) При изменении значения любой ячейки сразу (без выхода из фокуса) определить это, чтобы сделать кнопку "Сохранить" активной (это для данного примера, но есть ещё небольшой и другой функционал).
2) При изменении любой ячейки в новой строке, снизу сразу должна появиться другая новая строка.
3) По возможности для решения как можно меньше использовать CB.

Первый, пункт я ещё как-то представляю решение с помощью TextBox в ячейке. При фокусе на ячейке сразу перевести TextBox в режим редактирования. Придётся использовать событие TextBox.TextChanged и обработчик присоединять через EventSetter. Но не знаю насколько хорошее такое решение.

Второй пункт как сделать не знаю. Нужны подсказки. Хотя бы в какую сторону копать.
...
Рейтинг: 0 / 0
Отслеживание изменений в DataGrid
    #39728619
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123Eld HaspА вот доп. Колонка - зачем это пользователю?ты сам ввел в Модель важное для ТЕБЯ свойство очередность. Разве нет?Да, но для этого достаточно, в данном случае, индекса элемента в списке. По нему я и определяю очерёдность. Это нагляднее и удобнее для пользователя.
...
Рейтинг: 0 / 0
Отслеживание изменений в DataGrid
    #39728626
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123Eld HaspСоздаю приложение и учусь на этом.делая свой грид но не зная субд?
Это уже перекос будет.
Как для двоих сразу юзверей сделать программу на xml без субд? Без транзакции?Пока - да. Освоюсь с WPF буду прикручивать БД. Пока хочу максимально абстрагироваться от способа хранения данных. Чтобы изменив модель можно было ничего другого не трогать. Поэтому и не хочу привязывать DG напрямую к данным. И данная в примере часть, работает только с небольшим списком дополнительных свойств или информации.
Есть ещё другие данные большего объёма, там без БД в многопользовательском режиме не обойтись, пока делаю просто пробную однопользовательскую реализацию. Для самообучения.
...
Рейтинг: 0 / 0
Отслеживание изменений в DataGrid
    #39728653
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eld HaspПока хочу максимально абстрагироваться от способа хранения данных.не выйдет.
При бд весь твой топик и опыт прямиком в мусор.
А сейчас, на событие отрисовки ЯЧЕЙКИ подставляй data[row, column]
)))
...
Рейтинг: 0 / 0
Отслеживание изменений в DataGrid
    #39728721
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123Eld HaspПока хочу максимально абстрагироваться от способа хранения данных.не выйдет.
При бд весь твой топик и опыт прямиком в мусор.
А сейчас, на событие отрисовки ЯЧЕЙКИ подставляй data[row, column]
)))Я то опыт накапливаю сейчас для работы с WPF и C#. Даже если код не пригодится, опыт-то останется.
Что касается отрисовки, то такое часто применял при работе с WinForms. Там, по сути, по другому и невозможно. Хотелось бы чего-то другого в WPF. Я всё же склоняюсь к UserControl. Мне кажется это лучшее выглядит для WPF.
...
Рейтинг: 0 / 0
Отслеживание изменений в DataGrid
    #39728743
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eld HaspДаже если код не пригодится, опыт-то останется.хороший оксюморон)).
Делайте! Вас все равно не свернуть с пути. Удачи!
...
Рейтинг: 0 / 0
Отслеживание изменений в DataGrid
    #39728746
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eld HaspЯ то опыт накапливаю сейчас для работы с WPF и C#. Даже если код не пригодится, опыт-то останется.Делай, не слушай Петю, он, похоже, никогда не учился, сразу родился программистом.
Код, написанный два-три года назад, тем более в учебных целях, не пригодится, но опыт будет.
...
Рейтинг: 0 / 0
Отслеживание изменений в DataGrid
    #39728753
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProEld HaspЯ то опыт накапливаю сейчас для работы с WPF и C#. Даже если код не пригодится, опыт-то останется.Делай, не слушай Петю, он, похоже, никогда не учился, сразу родился программистом.
Код, написанный два-три года назад, тем более в учебных целях, не пригодится, но опыт будет.Ну токо с Вашей помощью! Куда ж я без Вас!
...
Рейтинг: 0 / 0
Отслеживание изменений в DataGrid
    #39728755
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DG пофигу на транзакции, это обычный элемент управления и к таблицам БД он имеет посредственное отношение , которое заключается в том, что он поддерживает DataTable класс.
Лично я, по возможности, использую всегда DataGrid, ведь с помощью шаблонов я могу выкинуть из него всё, что хочу. Есть еще вариант ListView, он более легковесный.

В DG всё готово, добавление\редактирование\горизонтальная виртуализация, сортировка и бери и пользуйся, но не без проблем конечно.

При использовании команд, состояние кнопки IsEnabled зависит от выполнения метода CanExecute, по этому у вас кнопка и не включается. Для того, чтоб кнопка обновила статус, нужно вручную вызвать метод CommandManager.InvalidateRequerySuggested() если обновление кнопки подписывается на этот вызов, см. пример ниже
Код: c#
1.
2.
3.
4.
5.
        public event EventHandler CanExecuteChanged
        {
            add { CommandManager.RequerySuggested += value; }
            remove { CommandManager.RequerySuggested -= value; }
        }


или возбудить внутреннее событие кнопки CanExecuteChanged, с её обычной реализацией
Код: c#
1.
        public event EventHandler CanExecuteChanged;


В первом случае учтите, что при таком подходе, вызов метода InvalidateRequerySuggested приведет к проверке всех команд которые подписаны на CommandManager.RequerySuggested. По этому, CanExecute должен быть максимально быстрой операцией.
Можно сделать, проще и дёргать событие ICommand.CanExecuteChanged вручную, либо отслеживать изменение свойств заданной модели представления через INPC внутри команды и возбуждать событие как это сделано во всякие MVVMLight и прочем.

Так же в биндинге источник обновляется по триггеру, который по умолчанию в 99% случаев задан как обновление при потере фокуса, но можно поменять на немедленное обновление.
"{Binding UpdateSourceTrigger=PropertyChanged}"

В примере есть 2 кнопки, настроенные на разные команды, но выполняющие одни и те же методы. У 1 кнопки состояние обновляется, а у второй кнопки нет.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
using System;
using System.ComponentModel;
using System.Windows;
using System.Windows.Input;

namespace WpfApp18
{
    public abstract class BaseModel : INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler PropertyChanged;
        public void OnPropertyChagned(string name)
        {
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
        }
    }

    public class MainModel : BaseModel
    {
        private string _myText;
        public string MyText
        {
            get => _myText;
            set
            {
                if (Equals(_myText, value)) return;
                _myText = value;
                OnPropertyChagned(nameof(MyText));
                MyCommand1.UpdateState();
            }
        }

        private IRelayCommand _myCommand1;
        public IRelayCommand MyCommand1 => _myCommand1 ??
            (_myCommand1 = new RelayCommand(OnMyCommand, CanMyCommand));


        private IRelayCommand _myCommand2;
        public IRelayCommand MyCommand2 => _myCommand2 ??
            (_myCommand2 = new RelayCommand(OnMyCommand, CanMyCommand));


        private bool CanMyCommand(object arg)
        {
            return !string.IsNullOrWhiteSpace(MyText);
        }

        private void OnMyCommand(object obj)
        {
            MessageBox.Show(MyText, "Message");
        }

        public MainModel()
        {

        }
    }


    public interface IRelayCommand : ICommand
    {
        void UpdateState();
    }

    public class RelayCommand : IRelayCommand
    {
        public event EventHandler CanExecuteChanged;

        private readonly Action<object> _onExecute;
        private readonly Func<object, bool> _canExecute;


        public RelayCommand(Action<object> onExecute, Func<object, bool> canExecute)
        {
            _onExecute = onExecute;
            _canExecute = canExecute;
        }

        public bool CanExecute(object parameter)
        {
            return _canExecute?.Invoke(parameter) ?? false;
        }

        public void Execute(object parameter)
        {
            _onExecute?.Invoke(parameter);
        }

        public void UpdateState()
        {
            OnCanExecuteCahgned();
        }

        protected void OnCanExecuteCahgned()
        {
            CanExecuteChanged?.Invoke(this, null);
        }

    }
}


Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
<Window x:Class="WpfApp18.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApp18"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Window.DataContext>
        <local:MainModel/>
    </Window.DataContext>
    <Grid>
        <StackPanel>
            <TextBox Text="{Binding MyText, UpdateSourceTrigger=PropertyChanged}" Margin="5"/>
            <Button Content="Save" Command="{Binding MyCommand1}" Margin="5,0,5,5"/>
            <Button Content="Save" Command="{Binding MyCommand2}" Margin="5,0,5,5"/>
        </StackPanel>
    </Grid>
</Window>
...
Рейтинг: 0 / 0
Отслеживание изменений в DataGrid
    #39728756
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Но в целом у меня от WPF впечатление какой-то сыроватости. Вроде, как хорошее начало, идеи, но начинаешь делать то того не хватает, то то как-то по кривому делать приходится, то сложности на пустом месте - какая-то мелочь в сотню строк обходится и т.д.
Ни как не пойму это у меня такое впечатление от нехватки знаний, или оно так и есть?
...
Рейтинг: 0 / 0
Отслеживание изменений в DataGrid
    #39728774
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProДелай, не слушай Петюдетский сад пенсионера не любящего модальных окон)
...
Рейтинг: 0 / 0
Отслеживание изменений в DataGrid
    #39728778
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Roman MejtesDG пофигу на транзакции, это обычный элемент управления и к таблицам БД он имеет посредственное отношение , которое заключается в том, что он поддерживает DataTable класс.Мне где-то попадалась (не могу найти сейчас) статья о том, как DG вносит изменения в источник. И там было объяснено, что у DG есть какое-то внутреннее представление или буфер для данных. И изменения происходят там. По умолчанию данные скидываются в источник при выходе (потере фокуса) из строки. Можно изменить на скидывание по выходу из ячейки. С новой строкой - только по выходу из строки.
Я не помню как точно - но там было название этого механизма. И транзакцией я его назвал не правильно, просто не смог найти правильного названия.
Roman MejtesЛично я, по возможности, использую всегда DataGrid, ведь с помощью шаблонов я могу выкинуть из него всё, что хочу. Есть еще вариант ListView, он более легковесный.

В DG всё готово, добавление\редактирование\горизонтальная виртуализация, сортировка и бери и пользуйся, но не без проблем конечно.Ага...! То что для Вас "не без проблем" это для меня два дня копания в инете и несколько десятков пробных вариантов. Roman MejtesПри использовании команд, состояние кнопки IsEnabled зависит от выполнения метода CanExecute, по этому у вас кнопка и не включается. Для того, чтоб кнопка обновила статус, нужно вручную вызвать метод CommandManager.InvalidateRequerySuggested() если обновление кнопки подписывается на этот вызовКнопка у меня включается нормально. Повесил привязку на Button.IsEnabled к свойству VM показывающему о наличии/отсутствии изменений. Это свойство в любом случае у меня есть в VM, так как нужно ещё для другого функционала кроме кнопки. Я этот кусок делал ещё то того как начал знакомится с командами - использовал события. После Вашей помощи начал переделывать. А CanExecute - я просто забыл переделать. Было свойство и я на автомате прибиндил к нему Button.IsEnabled. Для чистоты, раз использую команды, конечно надо переделать. Вы безусловно правы.Roman MejtesТак же в биндинге источник обновляется по триггеру, который по умолчанию в 99% случаев задан как обновление при потере фокуса, но можно поменять на немедленное обновление.
"{Binding UpdateSourceTrigger=PropertyChanged}" Я знаю об этом триггере, у меня в примере он установлен. Но для "поимки" изменения в источнике, в данном случае это элемент списка, придётся ловить его в самом элементе и потом "проталкивать" до VM - объявить событие в классе элемента и подписать на него VM. А для новой строчки даже это не поможет. Так как новая строчка существует только "внутри" DataGrid.
...
Рейтинг: 0 / 0
Отслеживание изменений в DataGrid
    #39728780
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eld HaspНи как не пойму это у меня такое впечатление от нехватки знаний, или оно так и есть?есть такое, и пусть Shocker.Pro прыгает от злости. Это эксперимент MS и он всегда может от него отказаться.
...
Рейтинг: 0 / 0
Отслеживание изменений в DataGrid
    #39728785
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123детский сад пенсионера не любящего модальных окон)Да я моложе вас всех вместе взятых! (С)


От модальных окон я отказался по простой причине. Представь, что есть приложение, не хелловорлд, в нем запущено несколько окон на вкладках, к примеру журнал заказов, несколько заказов, карточка клиента и т.п. И одна из этих вкладок вызвала некий диалог. А юзеру чтобы корректно заполнить этот диалог необходимо заглянуть в другое окно, скажем, в журнал доставок. Или звонит клиент, нужно срочно пообщаться с ним по его заказу, а у тебя открыт модальный наполовину заполненный диалог.
Так что модальность мешает и очень сильно. Диалог должен блокировать только тот компонент программы, из которого он вызван, а не все приложение.
...
Рейтинг: 0 / 0
Отслеживание изменений в DataGrid
    #39728788
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123есть такое, и пусть Shocker.Pro прыгает от злости. Это эксперимент MS и он всегда может от него отказаться.Есть мнение, что WPF закончен к версии 4.0. В 4.5 были лишь косметические изменения, по сравнению с предыдущими версиями.
...
Рейтинг: 0 / 0
Отслеживание изменений в DataGrid
    #39728789
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eld HaspМне где-то попадалась (не могу найти сейчас) статья о том, как DG вносит изменения в источник. И там было объяснено, что у DG есть какое-то внутреннее представление или буфер для данных. И изменения происходят там. По умолчанию данные скидываются в источник при выходе (потере фокуса) из строки. Можно изменить на скидывание по выходу из ячейки. С новой строкой - только по выходу из строки.
Я не помню как точно - но там было название этого механизма. И транзакцией я его назвал не правильно, просто не смог найти правильного названия.это наверно dataSet. Но тут WPF уже по другому.
...
Рейтинг: 0 / 0
Отслеживание изменений в DataGrid
    #39728792
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eld Hasp,

это не буфер, а так называемое представление коллекции (ICollectionView)
для списочных типов используется ListCollectionView, именно там реализован интерфейс IEditableCollectionViewAddNewItem добавление элементов в источник.
Который и поддерживается в DataGrid.
Для любой коллекции в рамках потока существует представление коллекции по умолчанию, через которое работает DataGrid, если источником является класс наследующий IEnumerable, но если создать собственный экземпляр представления и связать его с ItemSource, то будет использоваться именно он.
Представление коллекции так же реализует сортировку, фильтрацию списка, синхронизацию текущего элемента, навигацию и другой функционал.
...
Рейтинг: 0 / 0
Отслеживание изменений в DataGrid
    #39728801
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Roman MejtesEld Hasp,

это не буфер, а так называемое представление коллекции (ICollectionView)
для списочных типов используется ListCollectionView, именно там реализован интерфейс IEditableCollectionViewAddNewItem добавление элементов в источник.
Который и поддерживается в DataGrid.
Для любой коллекции в рамках потока существует представление коллекции по умолчанию, через которое работает DataGrid, если источником является класс наследующий IEnumerable, но если создать собственный экземпляр представления и связать его с ItemSource, то будет использоваться именно он.
Представление коллекции так же реализует сортировку, фильтрацию списка, синхронизацию текущего элемента, навигацию и другой функционал.Так как "выловить" изменение ячейки до выхода из неё?
И как быть с новой строкой? Можно ли сделать что-то с этим?
...
Рейтинг: 0 / 0
Отслеживание изменений в DataGrid
    #39728806
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eld HaspТак как "выловить" изменение ячейки до выхода из неё?на ввод каждой буквы. Тебе зачем? Сохраняется запись целиком.
...
Рейтинг: 0 / 0
25 сообщений из 88, страница 2 из 4
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Отслеживание изменений в DataGrid
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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