Компоненты DataContextProxy silverlight - есть ли лучший способ? - PullRequest
0 голосов
/ 26 февраля 2011

Я использую класс datacontextproxy, определенный Dan Wahlin , чтобы решить то, что казалось очень трудным в течение многих часов, предшествовавших этому открытию.

У меня есть выпадающий список, который связан с ObservableCollection<Accounts>.Поле со списком также имеет значения: DisplayMemberPath=AccountNumber и SelectedValue={Binding SelectedAccount}.Затем у меня есть DataForm, у которого свойство CurrentItem также связано с SelectedAccount.Внутри моей DataForm у меня есть несколько полей, которые требуют дополнительных раскрывающихся списков (AcctCode, UsageCode и т. Д.).Чтобы смягчить проблемы связывания, с которыми я столкнулся внутри DataForm, я реализовал datacontextproxy, что позволило мне установить ItemsSource моего cbobox на {Binding Source={StaticResource DataContextProxy}, Path=DataSource.AccountCodes}".Это прекрасно работает с точки зрения конечного результата.

Прежде чем наткнуться на это, я действительно боролся с этой находкой.Я не использую доменный контекст, поэтому я не мог использовать Kyle Mcllelans ComboBoxex и не мог использовать подавляющее большинство предлагаемых решений.Я пытался создать экземпляр моей ViewModel в качестве локального ресурса в моем View, но а) я чувствовал себя грязным с точки зрения MVVM и б) ему не удалось создать новый экземпляр виртуальной машины, поскольку моей виртуальной машине требуется несколько ссылок на сервисбыть переданным на конструкции.

В любом случае, мне просто интересно, есть ли способ, которым я должен делать это, который является либо более производительным, более MVVM, более обслуживаемым, более лучшим и т. Д. И т. Д.

Спасибо

Скотт

1 Ответ

2 голосов
/ 26 февраля 2011

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

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

...