Цель
CheckBoxColumn TwoWay привязка для доступа пользовательского ввода.
Описание проблемы
1. Пустая таблица (поэтому экземпляр объекта не найден)
2. Как MVVM узнает, какой экземпляр объекта использовать? Есть ли опция отладки / справки для правильного набора текста?
.xaml
<DataGrid x:Name="bGrid" ItemsSource="{Binding
Source=window.obColl_B,
UpdateSourceTrigger=PropertyChanged, Mode=TwoWay,
Path=BindsDirectlyToSource}" >
<DataGrid.Columns>
<DataGridCheckBoxColumn Width="0.25*" Header="Check"
Binding="{Binding berCheck}" IsReadOnly="False" />
<DataGridTextColumn Width="0.5*" Header="Beruf"
Binding="{Binding berName}" IsReadOnly="True" />
</DataGrid.Columns>
</DataGrid>
с #
public class obsColl : ObservableCollection<bEntry>
{
public obsColl(List<string> berList, List<string> bActive) : base()
{
for (int i = 0; i < berList.Count; i++)
{
if (bActive.Contains(berList[i]))
Add(new bEntry(true, berList[i]));
else
Add(new bEntry(false, berList[i]));
}
}
}
public class bEntry
{
private bool _berCheck;
private string _berName;
public bEntry(bool check, string name)
{
this._berCheck = check;
this._berName = name;
}
public bool berCheck
{
get { return _berCheck; }
set { _berCheck = value; }
}
public string berName
{
get { return _berName; }
set { _berName = value; }
}
}
public partial class window : Window
{
obsColl obColl_B;
public AuswahlBerufWindow(List<string> berList, List<string> berActive)
{
obColl_B = new obsColl(cpy_berList, cpy_berActive);
//so how does MVVM find the correct object to bind?
InitializeComponent();
...
}
}
// obColl_B automatically changes due to user input
Насколько я понял. ObservableCollection обрабатывает IPropertyChanged и INotifyChanged для меня, поэтому я должен быть в состоянии связать это с пользовательским вводом, используя Mode = TwoWay. Однако даже одиночные привязки терпят неудачу.
Идея, которую я использовал, была от
https://blogs.u2u.be/diederik/post/Codeless-two-way-data-binding-to-a-WPF-DataGrid
Однако я не совсем понимаю, как должен быть назначен правильный элемент для использования MVVM.
В большинстве примеров используется статический ввод, который не поможет. Из того, что я прочитал, мне нужно предоставить объекты интерпретатора .xaml соответствующего типа (ObservableCollection), но я не знаю, как вернуть значения через Mode = TwoWay.
Я попробовал другой подход для написания DataTable вручную без привязки, но таким образом (определяя только тип, заголовок и только для чтения) было добавлено только количество флажков без содержимого. Достаточно интересно, что не удалось с исключениями.
Обновление 1
Ошибка 1. Привязка неверна / программа завершается с ошибкой «EditItem не разрешен для этого представления» и может быть исправлена, , если Path + Mode + UpdateSourceTrigger не установлен . Однако это выглядит «исправлено».
Обновление 2
Ошибка должна заключаться в неверном источнике объекта.