Я считаю, что то, что я пытаюсь сделать, достаточно "просто", поэтому я, вероятно, просто упускаю что-то очевидное.
В DataGrid я пытаюсь привязать CheckBox, чтобы, когда онотмечен, цвет фона его строки будет меняться.У каждой строки есть CheckBox.Я в основном реализую свою собственную функцию выбора нескольких строк (это требование продукта, не спрашивайте), и у меня все остальное работает, кроме этой визуальной индикации выбранной строки.
Я прочитал этот вопрос но мне не хватает ответа, что именно поставить как "BooleanPropertyOnObjectBoundToRow".Я также посмотрел на этот вопрос и попытался связываться с RelativeSource, но безуспешно.
Я создаю свою сетку в своем коде, но здесь мой текущий стиль используется для строк(для которого определен мой DataTrigger):
<Style x:Key="MyRowStyle" TargetType="DataGridRow">
<Style.Triggers>
<DataTrigger Binding="{Binding IsChecked}" Value="True">
<Setter Property="Background" Value="Blue"/>
</DataTrigger>
</Style.Triggers>
</Style>
Теперь в своем программном коде я создаю свой DataGridTemplateColumn и использую Factory для создания своих флажков, а вот мой код, связанный с привязкой:
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.Я просто добавляю столбец шаблона отдельно, может быть, это влияет на отсутствие базового хранилища?
В любом случае, если вам нужна дополнительная информация, пожалуйста, дайте мне знать.Спасибо!