wpf datagrid сравнивает значение ширины другого источника - PullRequest
0 голосов
/ 04 декабря 2018

Я создаю объект класса со свойствами.Моя viewmodel имеет 2 свойства с коллекцией моего объекта класса: начальную коллекцию и коллекцию для обновления в сетке данных.На мой взгляд, сетка данных обязательна для коллекции моего объекта.Я использую метод AutoGeneratingColumn, чтобы динамически создавать столбцы для свойств моего класса.Моя проблема: я хочу определить различия между значениями двух моих коллекций (начальной и для обновления).Каков наилучший способ реализовать это дело?Создать определенный класс для сетки данных с разностным свойством для каждого свойства?- Другой путь ?Не могли бы вы мне помочь?

Точность: необходимо уметь различать эти 2 коллекции объектов независимо от notifypropertyaled.Эти 2 коллекции находятся в памяти, и при открытии окна я должен определить различия.

Я пытаюсь реализовать это в AutoGeneratingColumn, но это не правильно.Отсутствует номер строки для доступа к правильному элементу начального класса

private void DataGrid_AutoGeneratingColumnLandmark(object sender, DataGridAutoGeneratingColumnEventArgs e)
    {
        Binding binding;
        //on ajjoute l'exception validation
        DataGridBoundColumn oColumn = e.Column as DataGridBoundColumn;
        binding = new Binding(oColumn.Header.ToString());
        binding.Mode = BindingMode.TwoWay;


        ///comparaison entre la source de window et la source initiale

        Style columnStyle = new Style();
        DataTrigger oDataTrigger = new DataTrigger();
        oDataTrigger.Value = false;
        MultiBinding oMultiBinding = new MultiBinding();
        oMultiBinding.Converter = new CCompareObjectConverter();
        oMultiBinding.Bindings.Add(new Binding(oColumn.Header.ToString()));
        oMultiBinding.Bindings.Add(new Binding()
        {
            Path = new PropertyPath("DataContext.ProcInitiale.ProcedureModel." + oColumn.Header.ToString())
                                                        ,
            RelativeSource = new RelativeSource(RelativeSourceMode.FindAncestor, typeof(Window), 1)
        });

        oDataTrigger.Binding = oMultiBinding;
        oDataTrigger.Setters.Add(new Setter() { Property = DataGridCell.ForegroundProperty, Value = new SolidColorBrush(Colors.LightGreen) });

        columnStyle.Triggers.Add(oDataTrigger);
        oColumn.ElementStyle = columnStyle;

        if (oColumn is DataGridTextColumn)
        {
            oColumn.EditingElementStyle = (Style)FindResource("CellEditStyle");
        }


        CDataGridColumns<CLandmark> oDataColumn = new CDataGridColumns<CLandmark>();
        oDataColumn.ConstDataGridColumn(ref oColumn);
    }

Большое спасибо

...