Список флажков в шаблоне редактирования ячейки DataGrid - PullRequest
0 голосов
/ 24 апреля 2019

Я пытаюсь установить флажок только пара в ячейке данных WPF, основываясь на данных базы данных.

Я создал список флажков со списком, поступающим из моей базы данных, и этот список появляется, когда я нахожусь в режиме редактирования в ячейке. На данный момент я могу проверить только их все или ничего.

Это код XAML из столбца, в котором я хочу отобразить флажок.

<DataGridTemplateColumn Header="Teacher" Width="100">
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding TeacherName}"/>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
    <DataGridTemplateColumn.CellEditingTemplate>
        <DataTemplate>
            <ItemsControl ItemsSource="{StaticResource TeacherList}">
                <ItemsControl.ItemTemplate>
                    <DataTemplate>
                        <CheckBox Content="{Binding}" IsChecked="False"/>
                    </DataTemplate>
                </ItemsControl.ItemTemplate>
            </ItemsControl>
        </DataTemplate>
    </DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>

В конце я хочу DataGrid с классами и столбцом для Учителя. Я хочу иметь возможность ассоциировать нескольких Учителей с классом. Когда я вхожу в режим редактирования в ячейке, я хочу иметь возможность отображать все имя моего учителя из моей базы данных (поэтому я не знаю их и не знаю количество) и проверять только тех, кто связан с классом из ряда я нахожусь.

Чтобы связать нескольких учителей и класс, в моей базе данных есть таблица с идентификатором учителя и идентификатором класса.

Заранее спасибо.

UPDATE
Я чего-то достиг с вашей помощью. Я создал класс «Учитель» с именем и логическим значением «IsCheck».

В моем объекте "Класс" полевой учитель берет список. Я создаю каждый список для каждого класса и устанавливаю IsCheck для соответствующего учителя.

В моем XAML я установил источник флажка DataTemplate для этого списка учителей.

<DataGridTemplateColumn.CellEditingTemplate>
    <DataTemplate>
        <ItemsControl ItemsSource="{Binding TEACHERLIST}">
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <CheckBox Content="{Binding NAME}" IsChecked="{Binding ISCHECK}"/>
                </DataTemplate>
            </ItemsControl.ItemTemplate>
        </ItemsControl>
    </DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>

1 Ответ

0 голосов
/ 24 апреля 2019

Когда вы делаете

 <CheckBox Content="{Binding}" IsChecked="False"/>

Вы не привязываете IsChecked ни к чему. Поэтому, что бы вы ни делали с этим флажком, я не буду настаивать на том, что связано.

Вы должны сделать Учителя классом как минимум с двумя общедоступными свойствами. Имя строки и bool Проверено. Give Проверено значение по умолчанию false. Также должно быть реализовано свойство inotifyproperty.

Измените разметку на:

 <CheckBox Content="{Binding Name}" IsChecked="{Binding Checked, Mode=TwoWay"/>

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

В сторону.

Этот дизайн интерфейса кажется немного странным.

Более обычный вид дизайна будет иметь список классов. Вы выбираете один, и выбранный класс используется для управления тем, что вы видите в другом списке.

Это даст вам отдельный список учителей в другом списке.

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