在DataGrids上设置DataContext

时间:2012-09-14 10:16:21

标签: c# wpf mvvm resharper datacontext

我用WPF和MVVM开发了一个应用程序。在其中我有一个带有DataGrid的Window。它的ViewModel包含窗口的一些属性和DataGrid的一个属性(ObservableCollection<DataGridItemViewModel>)。

在xaml窗口中,我以这种方式设置了DataContext设计:

<Window x:Class="XXX"

    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

            mc:Ignorable="d"

            d:DataContext="{d:DesignInstance TheTypeOfTheWindowViewModelHere}">

然后我想以这种方式将设计DataContext设置到DataGrid上:

<DataGrid ItemsSource="{Binding Path=PropertyOfTheDataGrid}" d:DataContext="{d:DesignInstance DataGridItemViewModel}" >

但后来我收到警告,告诉我在DataGridItemViewModel中找不到PropertyOfTheDataGrid。

我以为我只设置了ItemsSource的DataContext,但不是我不确定我做错了还是某种问题。

提前致谢。

1 个答案:

答案 0 :(得分:2)

我不太确定你的期望是什么?根据您的命名标准,您有DataGridItemViewModel表示您希望将视图模型上下文应用于每个数据网格项?

通常,您可以将一个视图模型应用于整个视图,然后在该视图模型上具有一个属性,例如ObservableCollection,这是您的网格项目集合。然后,您可以将ItemsSource的{​​{1}}设置为绑定到该集合属性。

DataGrid

您通常不需要直接设置网格的数据上下文,它将使用视图的数据上下文(在这种情况下为ItemsSource="{Binding MyItems}" )。