Я смотрю на это уже несколько часов, но не могу понять ... Я успешно привязал «Вопросы» к ItemsSource. Вопросы - это ObservableCollection, содержащая объекты QuestionVM.
По какой-то причине текстовый столбец с заголовком «Вопрос» не может быть привязан к свойству «Вопрос» внутри «Вопросов».
<DataGrid ItemsSource = "{Binding Questions}" AutoGenerateColumns = "False" SelectedItem = "{Binding SelectedQuestion, Mode=TwoWay}">
<DataGrid.Columns>
<DataGridTextColumn Header = "Question" Binding = "{Binding Question}" Width = "*"/>
<DataGridTemplateColumn Width = "100">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Content = "Delete"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Width = "100">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Content = "Edit"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
Вот часть класса QuestionVM со свойствами.
public class QuestionVM
{
private Question _question;
public string Question { get { return _question.Question1; } set { _question.Question1 = value; } }
public string Category { get { return _question.Category; } set { _question.Category = value; } }
public ObservableCollection<AnswerVM> Answers { get; set; }
}
Я должен иметь возможность связать свойство Question правильно? Почему я не могу этого сделать?
Обновлено: Intellisense показывает только свойства основного контекста данных, а не свойства отдельных виртуальных машин Question внутри ObservableCollection вопросов.
DataContext = "{Binding ExistingQuestions, Source = {StaticResource Locator}}
ExistingQuestions содержит свойства Questions, SelectedQuestion и AddQuestion. Это те, которые показывает Intellisense.
Картинки для уточнения:

Как видите, это не свойства QuestionVM, а основной текст данных. Он не хочет выбирать свойства из коллекции ObservableCollection, которую я установил как ItemsSource.


Является ли вопрос членом группы вопросов? В этом случае привязка должна быть Binding = {Binding Questions.Question}.
@zzxyz Я тоже так думал. Скорее всего поменяет.
@fussel Question - это свойство внутри QuestionVM. ItemsSource привязан к ObservableCollection из QuestionVM.
Что вы имеете в виду под невозможностью связать? Question не отображается, или его значение не обновляется, если вы измените его в ViewModel?
Вопрос вообще не отображается. Intellisense тоже не подхватывает. Он показывает мне только свойства основного контекста данных для привязки.
@BobiSad Иногда такое случается, и вы ничего не можете сделать, кроме как отправить отчет об ошибке.
Не могли бы вы показать код, на который ссылается ваш DataContext. Как и где определяется ресурс Locator?
Я как-то решил это сейчас. Я не помню точно, в чем была причина, но Locator всегда возвращал новую виртуальную машину. Поэтому, если бы я хотел использовать данные существующей виртуальной машины, это не сработало бы, поскольку она возвращает совершенно новую. Я не уверен, возвращали ли привязки ошибку раньше, но теперь это не так. А проблема с Intellisense - это просто глупость Intellisense.





Обновленный ответ
Если объект не отображается в Intellisense, это может быть связано с пространством имен, в котором создается объект. Убедитесь, что объекты объявлены в одном пространстве имен, или попробуйте добавить пространство имен объекта Question в представление.
Пример добавления пространства имен в представление
xmlns:helper = "clr-namespace:Mynamespace.Myclass"
Кроме того, похоже, что модель просмотра не реализовала интерфейс INotifyPropertyChanged, который используется для уведомления представления элемента управления при обновлении связанного свойства.
Кордиэлемент
Кроме того, бессмысленно наследовать от DependencyObject, не модель, а модель представления должна реализовывать INotifyPropertyChanged.
@Clemens С DependencyObject вы правы, но это не проблема, если модель реализует INotifyPropertyChanged. Это было бы очень редко, но возможно. Взгляните на пример приложения Microsoft github.com/Microsoft/BikeSharing360_MobileApps/blob/master/s rc /…
@SirRufo Конечно, это нормально, что модель реализует INPC, но здесь важнее, чем это делает модель представления.
Я не думаю, что это ваша проблема, но
Question, являющийся вашим основным типом поддержки и важным общедоступным свойством вашего класса, довольно сбивает с толку. СчитаетеQuestionDTOдля типа?