WPF: привязать сетку данных к списку <String> - PullRequest
24 голосов
/ 20 мая 2010

Забавно, как иногда простые вещи кусают меня сзади.

Я могу красиво связать DataGrid с коллекцией некоторого произвольного класса, используя DataGridTextColumn следующим образом:

// bound to List<Class>
<DataGridTextColumn Header="Name" Binding="{Binding Name}"/>

Теперь я хочу связать DataGrid с простой коллекцией строк. Так как нет свойства «Имя» или чего-то подобного для привязки, как мне написать привязку:

// bound to List<String>
<DataGridTextColumn Header="Name" Binding="{Binding ???}"/>

Строка не имеет свойства "Значение" или чего-то подобного. И если я просто напишу {Binding}, я получу одностороннюю привязку, не способную записывать изменения обратно в коллекцию.

Думая об этом, я думаю, что невозможно связать с коллекцией, поэтому мне нужно обернуть мою строку в класс?
Или есть способ?

1 Ответ

33 голосов
/ 20 мая 2010

Вы можете запустить его со следующей привязкой:

Binding="{Binding Path=.}

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

Так что ваши мысли верны, вам нужно будет обернуть эти строки в объекты, использовать свойство path Binding и передать эти объекты в вашу DataGrid.

public class StringWrapper
{
    public string Value { get; set; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...