Laden...

WPF: RoutedUICommands mehrfach binden

Erstellt von Boris0815 vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.263 Views
B
Boris0815 Themenstarter:in
225 Beiträge seit 2008
vor 13 Jahren
WPF: RoutedUICommands mehrfach binden

Hiho,

ich habe verschiedene UserControls in denen ich auf ein Command reagieren will. Dazu habe ich eine Klasse mit RoutedUICommands

    public static class SCommands
    {
        private static RoutedUICommand leftMenuCommand;
        private static RoutedUICommand closeDialogCommand;
        
        static SCommands()
        {
            leftMenuCommand = new RoutedUICommand("Command für ...", "LeftMenuCommand", typeof(SCommands));
            closeDialogCommand = new RoutedUICommand("Command für ...", typeof(SCommands));
        }

        public static RoutedUICommand LeftMenuCommand { get { return leftMenuCommand; } }
        public static RoutedUICommand CloseDialogCommand { get { return closeDialogCommand; } }
    }

In einem UserControl binde ich nun z.B. einen Button.Command an eins von den RoutedUiCommands.

<Button Content="Fertig" Name="buttonFinish" Command="{x:Static local:SCommands.CloseDialogCommand}"/>

Um das Command nun irgendwo zu nutzen, mache ich folgendes:

            CommandBindings.Add(new CommandBinding(SCommands.CloseDialogCommand, mvvm.CloseDialogCommand, mvvm.LeftMenuCanExecute));

Das funktioniert auch so weit. Ich möchte jedoch das Command in verschiedenen Controls nutzen. Wenn ich nun in ein anderes Control auch solch ein CommandBinding verpasse, wird nur ein Binding genutzt und nicht beide. Aber eigentlich kann man doch Commands mehrfach binden oder?

Gruß

Boris

1.044 Beiträge seit 2008
vor 13 Jahren

Hallo Boris0815,

auch wenn es deine Frage nicht beantwortet: Wie ich sehe, verwendest du wohl MVVM. Warum möchtest du dann das Command nicht direkt in ein ViewModel packen? So wie du das machst, ist es nicht gearde der beste weg.

Das ist das standardmäßige Verhalten. Das lässt sich meines Wissens so nicht ändern. Du kannst versuchen, in den Ressourcen das Command anzugeben. Das Command muss halt über den Controls stehen. Die Controls binden dann direkt an das Command. So hast du dann ein Command und mehrere Controls, die an ein Command binden. Unter Umständen musst du dir noch eine Helfer-Klasse programmieren.

Kannst du näher dein Vorhaben beschrieben? Ich denke, es gibt bestimmt eine andere und bessere Lösung, anstatt sich jetzt hier auf Commands zu fixieren.

zero_x

B
Boris0815 Themenstarter:in
225 Beiträge seit 2008
vor 13 Jahren

Hallo zero_x,

ja ich versuche MVVM anzuwenden. Ich bin allerdings noch nicht sehr fit mit WPF und dem MVVM-Pattern und es fehlt wie immer die Zeit sich genau damit zu beschäftigen, daher das Durcheinander. Ich bin daher für jede Hilfe dankbar. 😃

Kannst du näher dein Vorhaben beschrieben? Ich denke, es gibt bestimmt eine andere und bessere Lösung, anstatt sich jetzt hier auf Commands zu fixieren.

In diesem Fall ist es so, dass ich einen Container habe, in dem verschiedene UserControls dargestellt werden. Meine MainView, die diesen Container beinhaltet, muss informiert werden, wenn ein UserControl nicht mehr benötigt wird. Einfaches Beispiel währe ein Dialog.
Wenn im Dialog OK gedrückt wird, soll ein Command ausgelöst werden um im Dialog noch Methoden auszuführen, und gleichzeitig in der MainView den Dialog auszublenden.

Gruß

Boris