C# WFP将ViewModel绑定到嵌套在另一个listbox中的listbox,这两个listbox都使用数据模板
我正在使用WPF 4.0和Caliburn Micro在C#中开发一个应用程序。我需要将ViewModel绑定到listbox,listbox是DataTemplate中的控件之一。此DataTemplate用作外部列表框中的ItemTemplate,并且。。。不,我想这不是很清楚 让我试着用一个有几个房间的酒店的例子来解释我需要做什么,每个房间都有几个客人 酒店屏幕上有一个名为Rooms的列表框,该列表框绑定到一个ObservableCollection(也称为Rooms),其中包含RoomViewModel项。Rooms列表框有一个名为RoomTemplate的ItemTemplate,如下所示:C# WFP将ViewModel绑定到嵌套在另一个listbox中的listbox,这两个listbox都使用数据模板,c#,wpf,binding,datatemplate,C#,Wpf,Binding,Datatemplate,我正在使用WPF 4.0和Caliburn Micro在C#中开发一个应用程序。我需要将ViewModel绑定到listbox,listbox是DataTemplate中的控件之一。此DataTemplate用作外部列表框中的ItemTemplate,并且。。。不,我想这不是很清楚 让我试着用一个有几个房间的酒店的例子来解释我需要做什么,每个房间都有几个客人 酒店屏幕上有一个名为Rooms的列表框,该列表框绑定到一个ObservableCollection(也称为Rooms),其中包含RoomV
<ListBox x:Name="Rooms" ItemTemplate="{DynamicResource RoomTemplate}"/>
RoomTemplate的外观如下(高度简化):
RoomViewModel包含一个名为Guests的ObservableCollection,其中包含GuestViewModel项。RoomTemplate包含一个名为Guests的列表框,该列表框应在Guests集合中显示GuestViewModel项。GuestTemplate将包含几个需要绑定到GuestViewModels的文本块
列表框室到收集室的第一次绑定由CM的conventions binder处理,效果很好。我的问题是GuestTemplate中listbox来宾的第二个绑定。如何将其绑定到Rooms集合中包含的RoomViewModels中的来宾项目?
<ListBox ItemsSource="{Binding Guests}" ItemTemplate="{DynamicResource GuestTemplate}"/>
将ItemTemplate
设置为DynamicResource
,并在DataTemplates
中为Room
和Guest
使用DataType
有什么区别?@Bob。不同之处在于,如果设置项目模板
,则给定列表框
或项目控件
中的所有项目都将具有相同的模板,而使用数据模板。数据类型
可以让WPF为每个项目找到合适的模板,因此,允许在同一个ListBox/ItemsControl中使用不同的模板。是否存在使用一个模板而不是另一个模板的情况?如果您知道列表框
将有类型A
对象,您是否仍应指定在项目模板
中使用类型A模板
,而不是将数据模板
放在列表框内。参考资料
?然后在ListBox.Resources中使用typeb模板
,并让WPF解析数据类型
本身?好的,我已经解决了它。解决方案是ItemsSource=“{Binding Guests}”,我已经尝试过了,但我的代码中还有另一个错误,所以它无法工作。谢谢大家!
<ListBox ItemsSource="{Binding Guests}" ItemTemplate="{DynamicResource GuestTemplate}"/>