Установка DataContext на DataGrids
Я разработал приложение с WPF и MVVM. В нем у меня есть окно с DataGrid. Это 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}" >
Но затем я получаю предупреждение о том, что не удается найти PropertyOfTheDataGrid внутри DataGridItemViewModel.
Я думал, что устанавливал только DataContext для ItemsSource, но не уверен, что я делаю это неправильно или это какая-то проблема.
Заранее спасибо.
1 ответ
Я не совсем уверен, что вы ожидали? Из вашего стандарта именования у вас есть DataGridItemViewModel
что предполагает, что вы ожидали применить контекст модели представления к каждому элементу сетки данных?
Обычно вы применяете одну модель представления ко всему виду, а затем имеете свойство для этой модели представления, которое, например, ObservableCollection
, которая является вашей коллекцией предметов для вашей сетки. Тогда вы бы установили ItemsSource
вашей DataGrid
привязать к этому свойству коллекции.
ItemsSource="{Binding MyItems}"
Обычно вам не нужно устанавливать контекст данных сетки напрямую, он будет использовать контекст данных представления (Window
в этом случае).