Привязка двух пользовательских элементов управления к одному и тому же DataContext или ViewModel? - PullRequest
3 голосов
/ 29 января 2010

Я работаю над UserControl, который состоит из панели Chart и другой области, которая управляет некоторыми данными диаграммы, т.е. элементами управления диаграммы (изменение цвета графика, включение или отключение элементов на графике и т. Д. .).

Я использую ViewModel для управления диаграммой и ее данными, но подумал, может быть, было бы неплохо сделать отдельный пользовательский контроль из области управления диаграммой, чтобы мой xaml не достиг большого размера и не выделял компоненты .

Если я сделаю это, хотя элементам управления нужно будет манипулировать данными из Chart ViewModel, как мне подойти к этому? Могу ли я связать DataContext элементов управления Chart с DataContext Chart, поэтому у меня есть только один ViewModel? Должен ли я дать своему элементу управления диаграмму собственную видовую модель, а затем попросить панель моделей и элементы управления диаграммой как-то говорить?

Или просто забыть об отдельном пользовательском контроле и объединить все в один большой элемент управления viewmodel / xaml?

Что бы люди посоветовали в этом случае?

1 Ответ

3 голосов
/ 29 января 2010

Вы абсолютно можете связать свои два UserControl с одним и тем же ViewModel. Вы можете либо привязать DataContext каждого к одному и тому же экземпляру объекта, либо, я полагаю, вы можете иметь DataContext одного элемента управления, привязанного к DataContext другого, и привязать его к вашему ViewModel. * 1007. *

Если вы начинаете с работающей реализации вашего представления и модели представления и чувствуете, что XAML становится громоздким, я бы согласился с тем, что вам следует разделить XAML на несколько представлений. Нет причины, по которой вам нужно отделять реализацию ViewModel до тех пор, пока вы не почувствуете, что она становится бессвязной или слишком большой. Разделение этого сейчас просто добавит сложности, поскольку вы предположили, что им все равно нужно будет общаться.

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

...