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