2016-09-03 6 views
1

ich den folgenden Code verwenden drei Zustand Checkbox MVVM zu implementieren:Trigger „aktiviert/deaktiviert“ nicht in drei Zustand Brennen Checkbox

<CheckBox IsChecked="{Binding 
       Path=IsValueChecked, 
       Mode=TwoWay, 
       UpdateSourceTrigger=Explicit}" 
      Margin="3,10,0,0" 
      IsThreeState="True"> 
    <i:Interaction.Triggers> 
    <i:EventTrigger EventName="Checked"> 
     <i:InvokeCommandAction Command="{Binding Path=CheckCommand, 
         RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"/> 
    </i:EventTrigger> 

    <i:EventTrigger EventName="Unchecked"> 
     <i:InvokeCommandAction Command="{Binding Path=CheckCommand, 
         RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"/> 
    </i:EventTrigger> 
    </i:Interaction.Triggers> 
</CheckBox> 

Und in Ansichtsmodell, eine notifizierbare Eigenschaft „IsValueChecked“ vom Typ Nullable<bool> ist erstellt. Das Problem ist, dass das Ereignis "Checked" und "Unchecked" beim Anklicken der Checkbox nicht ausgelöst wird. Was fehlt mir, bitte vorschlagen.

+0

mostlikely können Ihren Befehl Bindungen nicht aufgelöst werden. – Funk

+0

Immer eine gute Idee, im Ausgabefenster zu suchen, nachdem eine Bindung nicht funktioniert. –

Antwort

0

Erweitern auf Funks Kommentar oben, es sieht so aus, als ob Sie versuchen, an den DataContext auf der Ebene des DataGrid zu binden, aber Ihre Bindung wird tatsächlich versuchen, an eine Eigenschaft des DataGrid selbst zu binden. Wenn das DataGrid über keine CheckCommand-Eigenschaft verfügt, schlägt dies fehl.

Versuchen Sie, den Bindungspfad Wechsel zu:

{Binding Path=DataContext.CheckCommand, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}

+0

Vielen Dank, wie es jetzt funktioniert hat. –

+0

@EnaJain dann als Antwort markieren, und/oder upvote :) – Noctis