假设我有一个项目列表。所以我有两个视图: ListView和ItemView。
我还有两个ViewModels: ListViewModel和ItemViewModel。
在ListViewModel中,我创建并初始化了ItemViewModels的ObservableCollection。在ListView中,我有带有ItemTemplate -> ItemView的ListBox,并且ItemSource绑定到ObservableCoolection到ListViewModel中。我想将每个ItemView绑定到每个ItemViewModel,这样我就可以在ItemView.xaml中使用绑定,但我无法实现。
发布于 2011-07-09 23:06:06
我从您的问题中理解到的是,您希望将ItemViewModel绑定到ItemView.xaml,而您的ListBox驻留在其他一些xaml中(比如ListBox.xaml)。您不希望在ListBox.xaml中应用与ItemViewmodel和ItemVIew相关的绑定。如果这是问题所在,您可以轻松地创建一个DataTemplate映射来实现以下目标:
<Window
xmlns:vw="namespace of your view files (i.e. xaml files. ListBox.xaml and ItemView.xaml)"
xmlns:ViewModels="namespace of your view model files (i.e. ItemViewModel.cs, ListBoxViewModel.cs)">
<Window.Resources>
<DataTemplate DataType="{x:Type ViewModels:ItemViewModel}">
<vw:ItemView />
</DataTemplate>
</Window.Resources>
<Grid>
<ListBox ItemsSource="{Binding Path=List of ItemViewmodel in ListBoxViewModel.cs}"
</Grid>
</Window>然后,您的ItemViewModel类将使用ItemView进行映射,就像参考资料中指定的那样,不需要任何键。现在,您可以在ItemView.xaml中应用绑定。看,你不需要在这里分配ListBox的Itemtemplate,它会自动解析。如果您无论如何都要指定ItemTemplate (并且不想在资源中指定),则编写以下代码:
<ListBox.ItemTemplate>
<DataTemplate>
<vw:ItemView />
</DataTemplate>
</ListBox.ItemTemplate>任何一种方式都应该有效:)
https://stackoverflow.com/questions/6631168
复制相似问题