#c# #wpf
#c# #wpf
Вопрос:
Я пытаюсь установить только пару флажков в ячейке datagrid 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 с классами и столбцом для учителя. Я хочу иметь возможность связать нескольких учителей с классом. Когда я вхожу в режим редактирования ячейки, я хочу иметь возможность отображать все имена моих учителей из моей базы данных (поэтому я их не знаю и не знаю количество) и проверять только тех, кто связан с классом из строки, в которой я нахожусь.
Чтобы связать нескольких учителей и класс, у меня в базе данных есть таблица с идентификатором учителя и идентификатором класса.
Заранее благодарю вас.
Обновить
Я кое-чего достиг с вашей помощью. Я создал класс «Учитель» с именем и логическим значением ‘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. Привязки к свойствам C # чувствительны к регистру. Это означает, что
ISCHECK
иIsCheck
совершенно разные. Можете ли вы определить, какое написание вы использовали в своем классе C #? Кроме того, вы не можете привязать поле, только свойство. Свойство имеетget
и, возможно,set
блок; поле — нет. Работает ли код в вашем последнем обновлении на вас?
Ответ №1:
Когда вы делаете
<CheckBox Content="{Binding}" IsChecked="False"/>
Вы ни к чему не привязываете IsChecked.
Итак, что бы вы ни делали с этим флажком, я не буду привязан к тому, что привязано.
Вы должны сделать Teacher классом с как минимум двумя общедоступными свойствами. Имя строки и bool проверены. Присвоите Checked значение по умолчанию false. Он также должен реализовывать inotifypropertychanged.
Измените разметку на:
<CheckBox Content="{Binding Name}" IsChecked="{Binding Checked, Mode=TwoWay"/>
Как только вы это сделаете, вы сможете проверять и снимать флажки с каждого из этих учителей, и он будет сохранен в Учителе (экземпляре), к которому привязан флажок.
В качестве отступления.
Этот дизайн пользовательского интерфейса кажется немного странным.
Более обычный вид дизайна будет иметь список классов. Вы выбираете один, и выбранный класс используется для управления тем, что вы видите в другом списке.
Это дало бы вам отдельный список преподавателей в другом списке.
Комментарии:
1. Другая проблема заключается в том, что он говорит: «Я хочу иметь возможность связать нескольких учителей с классом», и похоже, что он имеет в виду один класс в строке. Однако существует только один
TeacherList
ресурс, поэтому, как только привязка верна, если вы установите флажок миссис Крабаппл в одной строке, она будет отмечена во всех из них. Каждая строка должна иметь свой собственныйTeacherList
с собственным набором экземпляров Teacher.2. Действительно, хорошая точка зрения. Вам нужен список выделенных учителей и список всех учителей и некоторая логика. Выделение нескольких учителей в класс кажется немного странным, теперь я думаю об этом. Прошло некоторое время с тех пор, как я был в школе, но, кажется, я помню только одного учителя у доски.
3. Я думаю, что может быть ученик-учитель и настоящий учитель или что-то в этом роде. У меня был один класс в средней школе, в котором учитель рисования и учитель музыки чередовались / сотрудничали по какой-то причине.
4. Спасибо за ваш ответ, я продолжаю пробовать. Но да, это для занятий на открытом воздухе, и иногда у них есть 2 или 3 учителя, например, для класса sea kayak, где у 1 учителя может быть только 6 учеников одновременно.