4 Stimmen

WPF ToggleButton und DelegateCommand

Gibt es eine Möglichkeit festzustellen, ob ein ToggleButton wird geprüft/ungeprüft über DelegateCommand s?

TIA, mike

XAML-Code unten. Ich verwende ItemsControl und Bindung an eine Sammlung. Ich bin im Grunde wollen eine Möglichkeit, den Toggle-Status jeder Schaltfläche zu erhalten, wenn es angeklickt wird.

<ScrollViewer VerticalScrollBarVisibility="Auto">
    <ItemsControl ItemsSource="{Binding Modifiers, Mode=TwoWay}">
        <ItemsControl.Template>
            <ControlTemplate>
                <ScrollViewer ScrollViewer.VerticalScrollBarVisibility="Auto">
                    <WrapPanel Margin="10" Width="{TemplateBinding Width}"
                               Height="{TemplateBinding Height}" 
                               FlowDirection="LeftToRight" IsItemsHost="true">
                    </WrapPanel>
                </ScrollViewer>
            </ControlTemplate>
        </ItemsControl.Template>
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <ToggleButton FontSize="18" Opacity="0.8"
                              Command="{Binding DataContext.ModifierToggleCommand, 
                                        RelativeSource={RelativeSource FindAncestor,
                                        AncestorType={x:Type Views:ModifiersView}}}" 
                              CommandParameter="{Binding}" Height="80" Width="200" Margin="5"
                              Content="{Binding Path=ModifierName}" />
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>
</ScrollViewer>

7voto

Thomas Levesque Punkte 277723

Eine einfachere Lösung wäre die Bindung der IsChecked Eigenschaft auf eine Eigenschaft Ihres ViewModels. Auf diese Weise müssen Sie nur den Wert der Eigenschaft überprüfen...

1 Stimmen

Danke für den Vorschlag, aber ich habe mehrere ToggleButtons auf dem Bildschirm... und die Anzahl der ToggleButtons könnte variabel sein.

0 Stimmen

Wie verhindert, dass mehrere Schaltflächen haben Sie binden sie an das Viewmodel? Sie haben offensichtlich einige eindeutige Bezeichner, so dass als ein Schlüssel zu einer Sammlung Eigenschaft verwendet werden könnte.

1 Stimmen

Jede ToggleButton entspricht einem Element in der Modifiers-Sammlung, daher müssen Sie die IsChecked-Eigenschaft in die Elemente der Sammlung aufnehmen.

1voto

Andrew Punkte 25704

Könnten Sie den CommandParameter deklarativ in der XAML angeben und eine Elementbindung verwenden, um den Wert mit dem aktuellen Wert des Umschalters aufzufüllen?

0 Stimmen

Hmm... ich bin mir nicht ganz sicher, was Sie hier andeuten wollen. Können Sie das erläutern?

0 Stimmen

msdn.microsoft.com/de-us/library/ms752308.aspx gibt einen Überblick über die Befehlsvergabe, die ICommandSource-Schnittstelle gibt Ihnen die CommandParameter, aber Sie finden die Implementierung von RoutedCommand (und den Erhalt von RoutedEventArgs) vielleicht einfacher / besser geeignet.

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