Как добавить свойство зависимости с дискретным набором строковых значений?

Многие свойства в стандартных элементах WPF поддерживают небольшой дискретный набор значений, которые могут быть указаны в виде строк при создании элементов в XAML. Например, свойство Orientation StackPanel поддерживает «Горизонтальный» и «Вертикальный» как дискретные свойства. IntelliSense поможет вам, предоставив вам эти два варианта после того, как вы откроете кавычки для свойства Orientation. Я знаю, что преобразователь значений участвует в преобразовании их в значения перечисления типа System.Windows.Controls.Orientation enum.

Как это сделать для настраиваемого свойства зависимостей для настраиваемого элемента управления? Я хочу, чтобы он работал так же, как для стандартных свойств зависимостей элементов, с помощью IntelliSense и всего остального.

Спасибо


person Michael Goldshteyn    schedule 22.02.2011    source источник


Ответы (1)


Если они не изменятся во время выполнения, ответ - enum. Если они действительно меняются, я делаю это со строками (или объектами, реализующими ToString()) и преобразователями, которые заполняют возможные значения.

Кстати, так работает обычная сетка свойств WinForms.

person Blindy    schedule 22.02.2011
comment
Значит, преобразование строки перечисления будет происходить автоматически в XAML для свойства зависимости перечисления? - person Michael Goldshteyn; 22.02.2011
comment
Это верно, enums содержат всю информацию, необходимую для WPF, чтобы понять, что вы можете, а что не можете вводить. Для плоских типов требуется дополнительный класс, в котором перечислены возможные значения, то есть преобразователь. - person Blindy; 22.02.2011