C# 当有多个级别时,如何将视图绑定到VM包装而不是直接绑定到模型
假设我有一个这样的模型结构C# 当有多个级别时,如何将视图绑定到VM包装而不是直接绑定到模型,c#,xaml,mvvm,binding,mvvm-light,C#,Xaml,Mvvm,Binding,Mvvm Light,假设我有一个这样的模型结构 Being |_ Person |_ Billing Address |_ Customer |_ Shipping Addresses (Collection) |_ etc.. |_ etc.. <Listbox ItemsSource="{Binding Being}"> <DataTemplate> <Listbox ItemSource="{Binding Pe
Being
|_ Person
|_ Billing Address
|_ Customer
|_ Shipping Addresses (Collection)
|_ etc..
|_ etc..
<Listbox ItemsSource="{Binding Being}">
<DataTemplate>
<Listbox ItemSource="{Binding Person}">
<DataTemplate>
<Listbox ItemSource="{Binding Customer.ShippingAddresses}"/>
</DataTemplate>
</Listbox>
</DataTemplate>
</Listbox>
我的看法是这样的
ListBox (ItemsSource - bound to a VM wrapper of "Being")
- DataTemplate containing ListBox2 (ItemsSource - bound to a VM wrapper of "Person")
- DataTemplate containing ListBox3 (ItemsSource that I want to be bound to "Shipping Adresses") PROBLEM!
Im使用MVVM Light和定位器,但无法理解如何进行第三级绑定,即第三二个数据模板(ListBox3)中的“Shipping Addresss”绑定。它只允许我直接绑定到模型中的Shipping Addresses集合。但是我想在Customer的VM包装中完成,因为我需要对集合做一些事情。任何代码都有助于内部绑定 如果我理解您的模型层次结构,那么发货地址似乎是第四级(除非您的意思是抽象或零)。您应该能够像这样深入了解每个模型的成员
<Listbox ItemsSource="{Binding Being}">
<DataTemplate>
<Listbox ItemSource="{Binding Person}">
<DataTemplate>
<Listbox ItemSource="{Binding Customer}">
<DataTemplate>
<Listbox ItemSource="{Binding ShippingAddress}"/>
</DataTemplate>
</Listbox>
</DataTemplate>
</Listbox>
</DataTemplate>
</Listbox>
此外,我相信点表示法在XAML中对属性有效。所以试试这样吧
Being
|_ Person
|_ Billing Address
|_ Customer
|_ Shipping Addresses (Collection)
|_ etc..
|_ etc..
<Listbox ItemsSource="{Binding Being}">
<DataTemplate>
<Listbox ItemSource="{Binding Person}">
<DataTemplate>
<Listbox ItemSource="{Binding Customer.ShippingAddresses}"/>
</DataTemplate>
</Listbox>
</DataTemplate>
</Listbox>
如果你能发布一些代码片段,我相信可以找到解决方案