2016-06-30 10 views
0

Ich habe eine Spalte, die ein Kontrollkästchen ist.Deaktivieren Sie das Kontrollkästchen, nachdem es aktiviert wurde

<telerik:GridViewColumn.CellTemplate> 
    <DataTemplate> 
     <CheckBox HorizontalAlignment="Center" IsChecked="{Binding GoodDeal, Converter={StaticResource ShortToBooleanConverter}}" Checked="CheckBox_Checked" Unchecked="CheckBox_UnChecked"></CheckBox> 
    </DataTemplate> 
</telerik:GridViewColumn.CellTemplate> 

Ich habe die Methode CheckBox_Check in dem Code hinter dem Problem zu behandeln, wenn das Kontrollkästchen aktiviert ist.

Innerhalb der Methode finde ich einige Bedingung nicht erfüllen. Also platziere ich ein Meldungsfeld. Wenn der Benutzer auf Ja klickt, wird das Kontrollkästchen automatisch deaktiviert.

Mein Gedanke ist, Methode in den Code hinter hinzuzufügen.

private void CheckBox_UnChecked(object sender, RoutedEventArgs e) 
{ 
    CheckBox chkBox = sender as CheckBox; 
    chkBox.IsChecked = false; 
} 

Aber wie dieses Ereignis im Code zu erhöhen?

Antwort

1

Verwenden von Code hinter Event-Handler und MVVM Bindungen sind keine gute Mischung, und kann die Ursache für Sie Anwendung, nicht wie erwartet verhält. Ich empfehle Ihnen, alle Ihre Logik in Ihrem Ansichtsmodell zu behalten, wenn Sie eine MVVM-Lösung implementieren.

Hier in diesem Pseudo-Code verwende ich die Eigenschaft, an die Sie binden, aber Sie können auch Befehle verwenden.

public short GoodDeal 
    { 
     get {return _goodDeal; } 
     set 
     { 
      if (NotGoodDeal(value)) 
      { 
       if (UserConfirmDeal() ) 
       { 
        _goodDeal = value; 
       } 
      } 
      RaisePropertyChange(); 
     } 
    } 
0

Fügen Sie diese auf Ihre XAML: Ungeprüfter = „CheckBox_UnChecked“

0

Eine Möglichkeit ist, einen Befehl auf der messagebox Schaltfläche hinzuzufügen und es zu Ihrem Viewmodel binden und IthembaDeal auf false gesetzt.

Verwandte Themen