如何绑定在视图模型声明的属性从另一个视图模型取价值?WPF ViewModel的属性从另一个视图模型绑定
让我解释一下
我有2周的ViewModels(实现INotifyPropertyChanged)和1查看
InvoiceView(只是我的发票的设计无论是用户控制或窗口或一个DataTemplate)
InvoiceViewModel
NoteListingVM(这个视图模型有它TableRefID一个出租物业的名称)
我n个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“绑定”不能在'NoteListingVM'类型的'TableRefID'属性上设置。 '绑定'只能在DependencyObject的DependencyProperty上设置。
所以错误说,我不能使用属性。
然后我想使用一个DependencyProperty。但是,如果实现InotifyPropertyChanged,则DependencyProperty无法在ViewModel中正常工作。 (这是大多数用户在实现ViewModel时提出的建议 - “INotifyPropertychanged”)
当您有一个userControl或CustomControl时,DependencyPropertys工作正常。但这不是我的情况(我没有一个用户控件或customControl我只有一个ViewModel,我想分配/传递“参数”的NoteListingViewModel InvoiceID改变时)
所以我将如何发送InvoiceID(只xaml)到NoteListingViewModel来过滤和显示只链接到当前发票的笔记,我有前面的我?什么是正确的方式?我确定我错过了或误解了mvvm模式?
aha :)我想你是对的,但是当你有这样的要求时,这是正确的方式吗?如果您将中央视图模型与其他ViewModel分开,应该不是更方便和可接受的路径吗? (或者如果他们之间有一些逻辑关系)只是想...(认为这是什么MVVM模式是和剂量)不知何故... – user2160275
@ user2160275谁告诉你的?通过隐藏你的视图模型,你试图避免什么问题? –
是的,我想..这是错误的吗?(纠正我),(当我们说隐藏他们,我的意思是为什么InvoiceVM需要知道我有NotesVM?) 只是我有一个视图与2 ViewModels,我希望在没有ViewModels的情况下共享它们之间的值彼此相互认识.. – user2160275