首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MVVM视图绑定

MVVM视图绑定
EN

Stack Overflow用户
提问于 2011-07-09 06:20:09
回答 1查看 392关注 0票数 1

假设我有一个项目列表。所以我有两个视图: ListView和ItemView。

我还有两个ViewModels: ListViewModel和ItemViewModel。

在ListViewModel中,我创建并初始化了ItemViewModels的ObservableCollection。在ListView中,我有带有ItemTemplate -> ItemView的ListBox,并且ItemSource绑定到ObservableCoolection到ListViewModel中。我想将每个ItemView绑定到每个ItemViewModel,这样我就可以在ItemView.xaml中使用绑定,但我无法实现。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-07-09 23:06:06

我从您的问题中理解到的是,您希望将ItemViewModel绑定到ItemView.xaml,而您的ListBox驻留在其他一些xaml中(比如ListBox.xaml)。您不希望在ListBox.xaml中应用与ItemViewmodel和ItemVIew相关的绑定。如果这是问题所在,您可以轻松地创建一个DataTemplate映射来实现以下目标:

代码语言:javascript
复制
<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 (并且不想在资源中指定),则编写以下代码:

代码语言:javascript
复制
<ListBox.ItemTemplate>
    <DataTemplate>
        <vw:ItemView />
    </DataTemplate>
</ListBox.ItemTemplate>

任何一种方式都应该有效:)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6631168

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档