2 Stimmen

Wie zu implementieren Multistate CheckBox in WPF für MVVM

Ich habe eine Anforderung, für die ich ein MultiState-Kontrollkästchen in WPF...

Auch wie ich bin mit MVVM so Handhabung Bindung und Befehle sollten die gleichen folgen, wie ich es in meinen Ansichten verwenden.

Ich habe ein Multistate-Kontrollkästchen in DotnetNuke (in ASP.NET gemacht) gesehen, aber wie man es in WPF machen

einige Beiträge zu diesem Thema wären hilfreich

Ein Beispiel wäre toll...

2voto

Wonko the Sane Punkte 10396

Kontrollkästchen haben eine bestimmte Funktionalität (angekreuzt, nicht angekreuzt und optional unbestimmt).

Ausgehend von Ihrem Kommentar würde ich denken, dass es am einfachsten wäre, es einfach als Schaltfläche zu machen. Ich habe jetzt keine Zeit, um ein tatsächliches Beispiel zu testen, aber hier einige Pseudocode, um Sie loszulegen:

XAML

<Button Command="{Binding ToggleDecisionState}">
    <Button.Content>
        <Image Source="{Binding CurrentDecisionIcon}" />
    <Button.Content>
</Button>

ViewModel (ohne Berücksichtigung der MVVM-Implementierungsdetails)

enum Decisions
{
    Agree,
    Disagree,
    Maybe,
    DoNotKnow
};

public Decisions CurrentDecision
{
    get {}
    set {}
}

public RelayCommand ToggleDecisionStateCommand
{
       // In here, call code to execute toggle
       if (mCurrentDecision == Decisions.DoNotKnow)
           CurrentDecision = Decisions.Agree;
       else
           CurrentDecision += 1;       
}

public ImageSource CurrentDecisionIcon
{
    get
    {
        ImageSource img = [some default image];
        switch (mCurrentDecision)
        {
            case Decisions.Agree:
                img = [path to Agree icon];
                break;

            // Other cases here
        }

        return img;
    }
}

1voto

Reza F.Rad Punkte 230

Wenn Sie ein Kontrollkästchen mit 3 Zuständen verwenden möchten, müssen Sie den dahinter liegenden booleschen Wert ändern (im ViewModel) in den Typ bool? ändern.

  public bool? IsEnabled { get; set; }

und diese Eigenschaft für CheckBox einstellen

  IsThreeState = True;

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X