Выбор поля в WPF Designer - без выпадающего меню? - PullRequest
7 голосов
/ 03 июня 2011

Исходя из фона WinForms, я немного удивлен, увидев, что большинство (если не все) свойств, связанных с полями, для таких вещей, как ItemsControl s в WPF, не имеют какого-либо раскрывающегося списка для выбора полей.

Например, при использовании ComboBox, если я связываю ItemsSource со строго типизированной коллекцией в моей ViewModel в конструкторе, свойства DisplayMemberPath и ValueMemberPath требуют, чтобы я вводил имена соответствующие поля вручную. Мой предыдущий опыт работы с WinForms заключался в том, что при привязке к строго типизированному списку (в частности, к источнику, который реализует ITypedList), мне будет предоставлен раскрывающийся список доступных полей, чтобы не было никакой возможности получить полное название поля. 1009 *

Я что-то здесь не так делаю, или это просто еще что-то, что не запечено в WPF?

Редактировать

Я знаю, что эта функциональность была предоставлена ​​интерфейсом ITypedList в WinForms, но, насколько я понимаю, подход System.ComponentModel к связыванию (PropertyDescriptor s, ITypedList, IBindingList и IListSource) не были использованы в WPF. Такие вещи, как сетки данных, по-видимому, не имеют проблем с получением списка полей для создания столбцов, поэтому мне просто интересно, если (и / или почему) эти свойства, предназначенные для представления имен свойств, не обеспечивают такой же уровень функциональности.

Ответы [ 3 ]

2 голосов
/ 14 августа 2011

В WPF свойства, такие как DisplayMemberPath и ValueMemberPath, не являются просто свойствами - пример может быть:

<ComboBox
    DisplayMemberPath="Addresses[0].Line1"
    ValueMemberPath="Address[0].Id"
    SelectedValue="{Binding Path=FavoriteAddressId}"
    ...
    />

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

Всегда существовала борьба за власть между системой связывания WPF, которая довольно динамична, и видением команды для инструментов, которые требуют определенной степени жесткости. Это один из тех случаев, которые наверняка попали в пропасть.

Редактировать: PropertyDescriptors, IBindingList и некоторые другие компоненты привязки Windows Forms также используются в WPF - например, моя библиотека MicroModels для работы использует PropertyDescriptors и построен для WPF. Однако Silverlight не поддерживает многие из них.

0 голосов
/ 06 июня 2011

При установке DataContext в коде разработчику крайне сложно определить тип, к которому он привязан.

При назначении DataContext в XAML это намного проще, и хотя в редакторе XAML нет раскрывающегося списка, при щелчке на маленьком квадрате за именем свойства в окне свойств можно выбрать свойства.

Little post-it/square button

Кроме того, вы можете даже использовать текст данных времени разработки для добавления типов и данных времени разработки (сообщение, связанное с бета2, но все еще действительное)

Полагаю, это отсутствующая функция XAML-редактора.

0 голосов
/ 03 июня 2011

Я думаю, что это ошибка в наборе инструментов WPF.Проверьте вопрос переполнения стека Привязка ValueMemberPath в AutoCompleteBox WPF возвращает только лучший результат при поиске по фамилии? .

Я думаю, что у него есть ответ на проблему.

...