Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > DataGrid. Новая колонка. Проблема с binding-ом


Автор: suneption 5.11.2012, 22:38
Всем привет! Постараюсь вкратце.
Подготовка.
Создал DataGrid:
Код

<DataGrid Grid.Row="0" AutoGenerateColumns="True" Name="dataGrid">
        </DataGrid>


Создал тестовый класс:
Код

class ABClass
        {
            public int A { get; set; }
            public int B { get; set; }
        }


Создал коллекцию. В обработчике кнопки дополняю коллекцию новым объектом и привязываю коллекцию к dataGrid:
Код

ObservableCollection<ABClass> collectionsABClass = null;

        private void buttonLoad_Click(object sender, RoutedEventArgs e)
        {
            if (collectionsABClass == null)
            {
                collectionsABClass = new ObservableCollection<ABClass>();
            }

            collectionsABClass.Add(new ABClass() { A = numberA, B = numberB });

            numberA++;
            numberB++;

            this.dataGrid.ItemsSource = collectionsABClass;
        }


Создал еще класс:
Код

class TotalClass
        {
            private int total;

            public int Total 
            { 
                get { return this.total; } 
                set { this.total = value; } 
            }
        }


Создал коллекцию. В обработчике кнопки дополняю коллекцию новым объектом, свойство Total которого равно сумме значений колонок A и B.

Код

ObservableCollection<TotalClass> collectionsTotalClass = null;

        private void buttonAddColumn_Click(object sender, RoutedEventArgs e)
        {
            if (collectionsTotalClass == null)
            {
                collectionsTotalClass = new ObservableCollection<TotalClass>();
            }

            foreach (ABClass abItem in collectionsABClass)
            {
                int totalAB = abItem.A + abItem.B;
                collectionsTotalClass.Add(new TotalClass() { Total = totalAB });
            }

            DataGridTextColumn newDataGridTextColumn = new DataGridTextColumn();
            newDataGridTextColumn.Header = "Total";

            Binding bind = new Binding();
            bind.Source = collectionsTotalClass;
            bind.Path = new PropertyPath("Total");

            newDataGridTextColumn.Binding = bind;

            this.dataGrid.Columns.Add(newDataGridTextColumn);
        }


Результат работы:
http://s1.ipicture.ru/uploads/20121105/Pjdkg6YK.bmp

И тут позникает проблема. В новой колонке "Total" должна отображаться эта сумма. Но этого не происходит! Подозреваю что проблема в привязке. Как это исправить!?

Автор: suneption 13.11.2012, 13:14
Один из путей решения данной проблемы: http://social.msdn.microsoft.com/Forums/ru-RU/fordesktopru/thread/e9d001d0-6e75-4208-b1bf-d9bab8d47694

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)