Двустороннее связывание ObservableCollection <string>с WPF DataGrid - PullRequest
1 голос
/ 30 апреля 2011

Я уже некоторое время связываю разные вещи / читаю по этому вопросу и пока не нашел ответа.Надеюсь, вы, ребята, можете помочь.

У меня есть наблюдаемая коллекция типа string.Я хочу связать эту коллекцию с сеткой данных и иметь возможность редактировать / удалять / добавлять в коллекцию.Вот мой xaml:

<DataGrid ItemsSource="{Binding Movies.Titles}"  CanUserDeleteRows="True" CanUserAddRows="True" Height="300">
    <DataGrid.Columns>
        <DataGridTextColumn Binding="{Binding Path=DataContext, RelativeSource={RelativeSource Self}}"/>
    </DataGrid.Columns>
</DataGrid>

Та же самая наблюдаемая коллекция также связана со списком.Я хочу иметь возможность редактировать коллекцию, используя метод datagrid (выше) и видеть изменения / изменения в списке.Удаление / добавление работает правильно, но когда я редактирую строку внутри ячейки сетки, и она теряет фокус, строка возвращается к первоначальному состоянию и никогда не обновляется.предложения.

Ответы [ 2 ]

3 голосов
/ 20 декабря 2012

Ничего себе, я пошел делать это вчера и застрял с DataGrid, который добавит новую строку для моей ObservableCollection.После исследования я понял почему.Струны и неизменяемые.

Я нашел этот вопрос, и, к сожалению, у него не было ответа.Поэтому я не могу оставить этот ответ пустым.

Итак, вот ответы, которые я нашел:

  1. DataGrid не может обновить коллекцию строк путем добавления, редактирования илиудаление строк.

  2. Я нашел обходной путь для переноса строки в объект StringWrapper.Вот оно.

    открытый класс StringWrapper {открытая строка Text {get;задавать;}}

Мне не понравился ни один из ответов.

Исходный вопросник, moncadad, выглядит так, как будто он хочет DataGrid с одним столбцом.Он, вероятно, просто хочет добавить и удалить строки из ObservableCollection без большого количества кода.Редактирование, вероятно, не слишком важно, поскольку это можно сделать, удалив и добавив снова.

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

ListBoxдля строк, поддерживающих добавление и удаление

По сути, идея состоит в том, чтобы создать вид DataGrid с меткой, ListBox, TextBox и кнопкой Add, и, поскольку это элемент управления, он долженработать с ObservableObject или List в одном элементе управления.

Это дает вам Добавить и Удалить.Я не предоставляю правку.

Надеюсь, это поможет следующему парню.

0 голосов
/ 20 октября 2015

На самом деле это работает, вы должны просто использовать

Mode=OneWay

в вашем переплете.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...