Я считаю, что то, что я пытаюсь сделать, достаточно «просто», поэтому я, вероятно, просто пропустил что-то очевидное.
В DataGrid я пытаюсь привязать CheckBox так, чтобы при его проверке цвет фона его строки менялся. Каждая строка имеет CheckBox. Я в основном реализую свою собственную функцию выбора нескольких строк (это требование продукта, не спрашивайте), и у меня все остальное работает, кроме этой визуальной индикации выбранной строки.
Я читал этот вопрос, но где мне не хватает ответа, так это на то, что именно нужно указать как "BooleanPropertyOnObjectBoundToRow". Я также просмотрел этот вопрос и попытался возиться с RelativeSource, но безуспешно.
Я создаю свою сетку в отделенном коде, но вот мой текущий стиль, используемый для строк (в котором определен мой DataTrigger):
Теперь в отделенном коде я создаю DataGridTemplateColumn и использую Factory для создания мои флажки, и вот мой код, относящийся к Binding:
Binding checkBinding = new Binding("IsChecked");
checkBinding.Mode = BindingMode.OneWayToSource;
RelativeSource relativeSource = new RelativeSource();
relativeSource.AncestorType = typeof(DataGridRow);
relativeSource.Mode = RelativeSourceMode.FindAncestor;
checkBinding.RelativeSource = relativeSource;
factory.SetBinding(CheckBox.IsCheckedProperty, checkBinding);
Что может представлять интерес, так это тот факт, что я установил ItemsSource моей DataGrid в DataTable, но мой столбец CheckBox НЕ имеет соответствующего столбца в DataTable. Я просто добавляю столбец шаблона отдельно, может быть, на это влияет отсутствие основного хранилища?
В любом случае, если вам нужна дополнительная информация, дайте мне знать.Спасибо!