Какие элементы управления WPF поддерживают привязку данных? - PullRequest
1 голос
/ 14 июня 2011

Есть ли где-нибудь список?Вчера я потратил много времени, пытаясь связать ObservableCollection с RichTextBox, тогда, когда это не сработало с FlowDocument (который я в итоге нашел простой обходной путь).Если нет списка, есть ли какая-то интеллигентная уловка, чтобы узнать?Мне показалось странным, что FlowDocument не поддерживает привязку данных к коллекции .У него есть свойство DataContext, которое отображается в Intellisense, поэтому я решил, что есть какой-то способ связать коллекцию.Это в сочетании с тем фактом, что поддерживается привязка single item , убедило меня, что я просто не могу найти подходящее свойство.Все в конце концов все это понимают, или я упустил что-то очевидное?

[Правка - и выделенный курсивом текст выше - правки] Я думаю, я такой новичок, что даже не знаю, какзадайте вопрос правильно.У меня есть половина моего ответа.То, что я действительно хочу знать, теперь я понимаю, это две вещи.

  1. как узнать, какие элементы управления могут быть связаны с коллекцией (ответ снизу - любой элемент управления, имеющий свойство ItemsSource)

  2. При взгляде на элемент управления как узнать, какие из свойств являются свойствами зависимостей, с которыми я могу связать данные?(Я понимаю - только сейчас - что, когда я захожу в браузер и смотрю на каждое свойство, в сводном разделе упоминаются, какие свойства являются свойствами зависимостей. Немного трудоемко щелкнуть каждое свойство в элементе управления, но я могу с этим смириться, если этоСамый простой способ узнать).

Ответы [ 3 ]

3 голосов
/ 14 июня 2011

Все, что получено из FrameworkElement (который, насколько мне известно, является элементом управления WPF), поддерживает привязку данных Однако связывание коллекции требует особого типа связывания. Вам нужно будет привязать к ItemsControl или использовать элемент управления, который имеет ItemsSource DependencyProperty

2 голосов
/ 14 июня 2011

Привязка данных поддерживается на любом DependencyProperty.

  • Целевое свойство должно быть свойством зависимости. Большинство свойств UIElement являются свойствами зависимостей, а большинство свойств зависимостей, кроме свойств только для чтения, по умолчанию поддерживают привязку данных. (Только типы DependencyObject могут определять свойства зависимостей, а все элементы UIE производные от DependencyObject.)

В случае RichTextbox или FlowDocument вы можете добиться привязки через свойство зависимостей Run.Text с .Net 4.0. Но имейте в виду в RichTextBox:

Привязка текста к Run объекту, содержащемуся в RichTextBox, не поддерживается. Операции редактирования в RichTextBox могут привести к очистке привязки.

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

2 голосов
/ 14 июня 2011

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

...