我用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,但不是我不确定我做错了还是某种问题。
提前致谢。
答案 0 :(得分:2)
我不太确定你的期望是什么?根据您的命名标准,您有DataGridItemViewModel
表示您希望将视图模型上下文应用于每个数据网格项?
通常,您可以将一个视图模型应用于整个视图,然后在该视图模型上具有一个属性,例如ObservableCollection
,这是您的网格项目集合。然后,您可以将ItemsSource
的{{1}}设置为绑定到该集合属性。
DataGrid
您通常不需要直接设置网格的数据上下文,它将使用视图的数据上下文(在这种情况下为ItemsSource="{Binding MyItems}"
)。