WPF DataGrid Невозможно связать с ItemsSource - PullRequest
0 голосов
/ 18 октября 2018

Я смотрю на это уже несколько часов, но не могу понять ... Я успешно связал "Вопросы" с ресурсом 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 показывает только свойства основного контекста данных, а не свойства отдельных QuestionVM в коллекции ObservableCollection.

        DataContext="{Binding ExistingQuestions, Source={StaticResource Locator}}

ExistingQuestions содержитсвойства Вопросы, Выбранный вопрос и Добавить вопрос.Это те, которые показаны Intellisense.

Изображения для дальнейшего разъяснения:

Attempting to bind..

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

Properties of main data context.

I am trying to bind this property which is inside the QuestionVM.

1 Ответ

0 голосов
/ 19 октября 2018

Обновленный ответ

Если объект не отображается в Intellisense, это может быть связано с пространством имен, в котором создается объект.Убедитесь, что объекты объявлены в одном и том же пространстве имен, или попробуйте добавить пространство имен объекта Question в представление.

Пример добавления пространства имен к представлению

xmlns:helper="clr-namespace:Mynamespace.Myclass"

Кроме того, представляется, что модель представления не реализовала интерфейс INotifyPropertyChanged, который используется для уведомления представления элемента управления при обновлении свойства binded.

Cordialement

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...