Как связать свойство, объявленное в режиме просмотра, для получения значения из другого viewModel?wpf ViewModel Property Binding с другой viewmodel
позвольте мне объяснить
у меня есть 2 ViewModels (Реализует INotifyPropertyChanged) и 1 Вид
InvoiceView (только мой дизайн счета независимо от того, если это пользовательский элемент управления или окно или DataTemplate)
InvoiceViewModel
NoteListingVM (это ViewModel имеет имя свойство ДАВАЙТЕ он TableRefID)
I п ViewInvoice я быть_наст расширитель с его DataContext установлен в положении (NoteListingVM), чтобы показать некоторые заметки, которые связаны с конкретным InvoiceID
У меня есть проблема, когда я попробовать следующий
<Expander Header="NOTES" DockPanel.Dock="Top" Foreground="{StaticResource AlternateForeGround}">
<DockPanel>
<DockPanel.DataContext>
<WendBooks:NoteListingVM TableRefID="{Binding InvoiceID}" x:Name="TransactionNotes"></WendBooks:NoteListingVM>
</DockPanel.DataContext>
A «Связывание» не может быть задано в свойстве «TableRefID» типа «NoteListingVM». «Связывание» может быть установлено только на DependencyProperty объекта DependencyObject.
, так как ошибка говорит, я не могу использовать свойство.
Тогда я думаю использовать DependencyProperty. Но DependencyProperty не может нормально работать в ViewModels, если вы реализуете InotifyPropertyChanged. (и это то, что большинство пользователей предлагают при реализации ViewModel - «INotifyPropertychanged»)
DependencyProperty работают хорошо, когда у вас есть пользовательский контроль или пользовательский контроль. Но это не мой случай (у меня нет usercontrol или customControl i, у меня есть ViewModel, который я хочу назначить/передать «параметр» в NoteListingViewModel при изменении InvoiceID)
так как я буду отправлять InvoiceID (только xaml) в NoteListingViewModel для фильтрации и отображения только заметок, которые связаны с текущим счетом, который у меня впереди? Каков правильный путь? я уверен, что я пропустил или неправильно понял шаблон mvvm?
aha :) Я думаю, вы правы, но это правильный способ следовать, когда у вас есть такое требование? не должен быть более удобным и приемлемым путем, если вы сохраните свою центральную модель просмотра отдельно от других ViewModels? (или если у них есть какая-то логика между ними или нет), просто думая .. (думал, что это то, что шаблон MVVM и доза.) как-то ... – user2160275
@ user2160275 Кто вам сказал? Какую проблему вы пытаетесь избежать, скрывая свои режимы просмотра друг от друга? –
Да, я думаю .. это неправильно? (Исправьте меня), (когда мы говорим, что скрываем их, я имею в виду, почему InvoiceVM должен знать, что у меня есть NotesVM?) просто у меня есть представление с 2 ViewModels, и я ожидаю доля значений между ними без ViewModels знают друг друга. – user2160275