Установка 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 в этом случае).

Другие вопросы по тегам