Credo che quello che sto cercando di fare sia abbastanza "semplice", quindi probabilmente mi manca semplicemente qualcosa di ovvio.Associazione di un DataTrigger alla proprietà IsChecked di una casella di controllo
In un DataGrid, sto tentando di associare un CheckBox in modo che quando viene selezionato, il colore di sfondo della sua riga cambierà. Ogni riga ha un CheckBox. Fondamentalmente sto implementando la mia funzionalità select-multiple-rows (è un requisito di prodotto, non chiedo), e ho tutto il resto a lavorare, ma questa indicazione visiva di una riga selezionata.
Ho letto this question ma dove mi manca la risposta è esattamente cosa mettere come "BooleanPropertyOnObjectBoundToRow". Ho anche guardato allo this question e ho provato a fare confusione con una RelativeSource ma senza fortuna.
Creo il mio griglia nel mio code-behind, ma qui è il mio stile corrente utilizzato per le righe (che ha definito la mia DataTrigger):
<Style x:Key="MyRowStyle" TargetType="DataGridRow">
<Style.Triggers>
<DataTrigger Binding="{Binding IsChecked}" Value="True">
<Setter Property="Background" Value="Blue"/>
</DataTrigger>
</Style.Triggers>
</Style>
Ora nel mio code-behind, Creo il mio DataGridTemplateColumn e utilizzare una fabbrica per creare le mie caselle di controllo, ed ecco la mia Binding-rilevanti codice:
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);
ciò che può essere di interesse è il fatto che ho impostato l'ItemsSource del mio DataGrid a un DataTable, ma la mia colonna casella di controllo non fa avere una colonna corrispondente nel DataTable. Semplicemente aggiungo la colonna del template separatamente, forse questa mancanza di storage sottostante sta influenzando questo?
In ogni caso se avete bisogno di ulteriori informazioni, fatemelo sapere. Grazie!
Forse la mia risposta aiuto a tutti? – Phil