2016-06-14 4 views
0

Ich abonnierte das Check/Uncheck-Ereignis über Zellstil, wie unten.Wie kann ich das Check/Uncheck-Ereignis der datagridcheckbox-Spalte in WPF abbestellen?

<DataGridCheckBoxColumn x:Name="colAccept" Binding="{Binding Accepted}" Header="Accepted"> 
     <DataGridCheckBoxColumn.CellStyle> 
      <Style> 
      <EventSetter Event="CheckBox.Checked" Handler="OnChecked_Accepted"/> 
      <EventSetter Event="CheckBox.Unchecked" Handler="OnUnchecked_Accepted"/> 
      </Style> 
     </DataGridCheckBoxColumn.CellStyle> 
    </DataGridCheckBoxColumn> 

Mir Aktualisierung die Eigenschaft, die hinter dieser Spalte aus dem Kodex gebunden ist, sondern würde die Veranstaltung nicht wie, dass man Zeit zu schießen. In Winforms würde ich das Ereignis abbestellen, dann das Kontrollkästchen deaktivieren und dann erneut abonnieren. Aber wie kann ich dies in WPF xaml tun?

Antwort

1

Es ist einfacher, stattdessen eine DataGridTemplateColumn zu verwenden.

 <DataGridTemplateColumn Header="Accepted"> 
      <DataGridTemplateColumn.CellTemplate> 
       <DataTemplate> 
        <CheckBox IsChecked="{Binding Mode=OneWay}" Checked="OnChecked_Accepted" Unchecked="OnUnchecked_Accepted" /> 
       </DataTemplate> 
      </DataGridTemplateColumn.CellTemplate> 
     </DataGridTemplateColumn> 

im Handler

private void OnUnchecked_Accepted(object sender, RoutedEventArgs e) 
    { 
     var cb = sender as CheckBox; 
     cb.Unchecked -= OnUnchecked_Accepted; //this line unsubscribes the event 
    } 
+0

löst das Problem, aber bei der Verwendung von Datagridtemplatecolumn Ich habe Problem aktivieren/deaktivieren mit dem der Leertaste zu tun. Akzeptieren Sie dies als eine Antwort. Vielen Dank! – NoSaidTheCompiler

Verwandte Themen