Я использую класс 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, более удобным в обслуживании, более лучшим и т. д. и т. д.
Спасибо,
Скотт