MVVM pass values between view models

后端 未结 2 785
傲寒
傲寒 2021-01-05 06:49

I try to deal with problem of passing value from one ViewModel to another. Here is an example.

We have Parent View and its corresponding ViewModel, in that View we s

2条回答
  •  隐瞒了意图╮
    2021-01-05 07:43

    One of the main tenants of the MVVM pattern is that you should be able to execute your ViewModel code without a View, in order to unit test your View logic. In othe words, ideally you should be able to execute your application in a 'headless' mode.

    In your example you state that the ParentView creates a ChildView which in turn creates a ChildViewModel (which you are struggling to connect up). Can this work in headless mode? It seems to me that you are relying on your View to perform this Parent-Child navigation.

    If you flip it the other way, have ParentViewModel create ChildViewModel, you no longer have a problem with communication between ViewModels. The ParentView needs to 'watch' (i.e. property change) for the new ChildViewModel being creates, and constructs the ChildView accordingly.

    In more detail:

    1. ParentView instantiates ParentVM
    2. User interacts in such a way that the child is required
    3. ParentVM creates a ChildVM, exposing it via a ChildVM property
    4. ParentView handles the resultant PropertyChanged event, creating a ChildView, setting its DataContext to ChildVM.

提交回复
热议问题