Поле со списком DataContextProxy silverlight - есть ли лучший способ?

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

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

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

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

Спасибо,

Скотт


person Scott Silvi    schedule 25.02.2011    source источник


Ответы (1)


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

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

person Rus    schedule 26.02.2011
comment
Большое спасибо за информацию о SL5. У меня не было времени посмотреть, но я взволнован :-D - person Scott Silvi; 27.02.2011