Что не так с «DataContext = this» в пользовательских элементах управления WPF? - PullRequest
13 голосов
/ 28 января 2010

Я где-то читал, что установка DataContext = this в конструкторе пользовательского элемента управления является плохой практикой (хотя не могу найти где). Почему это плохая практика? Какая альтернатива?

1 Ответ

18 голосов
/ 28 января 2010

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

Если вы начинаете возиться с контекстом данных внутри элемента управления и полагаетесь, что для него установлено значение «this», то вы либо запретите их привязку, либо ваш элемент управления не будет работать должным образом, поскольку вы полагаетесь на это не изменяется.


Скажем, у вас есть пользовательский элемент управления, в котором есть множество элементов управления. Вместо этого вы могли бы установить DataContext на субэлементах в качестве вашего пользовательского класса управления (или того, что вы хотели). Это позволит вам привязать эти субэлементы к свойствам вашего пользовательского элемента управления, в то же время позволяя всем пользователям вашего элемента управления устанавливать его контекст данных для своей модели представления и привязывать также к свойствам.

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