2

我用 WPF 和 MVVM 开发了一个应用程序。在其中我有一个带有 DataGrid 的窗口。它的 ViewModel 包含一些窗口属性和一个 DataGrid (an 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 但不是我不确定我做错了还是某种问题。

提前致谢。

4

1 回答 1

3

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

通常,您会将一个视图模型应用于整个视图,然后在该视图模型上拥有一个属性,例如 an ObservableCollection,它是您网格的项目集合。然后你将设置ItemsSourceDataGrid的绑定到该集合属性。

ItemsSource="{Binding MyItems}"

您通常不需要直接设置网格的数据上下文,它会使用视图的数据上下文(Window在本例中为 a)。

于 2012-09-14T10:24:40.890 回答