【问题标题】:Confusion with WPF MVVM与 WPF MVVM 混淆
【发布时间】:2009-05-15 08:15:14
【问题描述】:

我从 CodePlex 下载了关于 MVVM 的文档,但是我看不懂这个图。

alt text http://img194.imageshack.us/img194/3959/diagram.png

在文档中,ContactView 从未将其 DataContext 设置为 ContactViewModel,所以我不明白为什么这张图显示 ContactView 通过 DataContext 引用 ContactViewModel。

不知道什么时候设置了ContactView.DataContext,还是文档漏掉了这一点?

【问题讨论】:

标签: wpf mvvm


【解决方案1】:

如果联系人显示在列表视图或类似内容中,则可能不需要专门设置 DataContext。

如果listview的datacontext设置为MainViewModel的Contacts属性,那么每个item的datacontext会自动设置为具体的ContactViewModel对象,这可能会触发item使用ContactView控件呈现,假设某个模板绑定是在文档的前面设置的。


抱歉,我在使用 codeplex 时遇到了问题,只是设法下载了文档。图表之前的代码块证实了我的怀疑:

<Grid>
    <ListBox ItemsSource="{Binding Contacts}">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <views:ContactView />
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
</Grid>

由于 ListBox 绑定了 Contacts ObservableCollection,每个 ListItem 都将其 DataContext 设置为它所绑定的特定对象。 DataTemplate 设置为将每个项目显示为 ContactView 控件。因此,ContactView 的 DataContext 将被设置为集合中正确的 Contact 对象,所有这些都发生在幕后,而无需您自己实际设置属性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-12
    • 2011-01-12
    • 2011-04-17
    • 1970-01-01
    • 1970-01-01
    • 2014-07-09
    • 1970-01-01
    相关资源
    最近更新 更多