Oft Antworten hier gefunden, aber jetzt es `s mein erstes Mal;)Button: verschiedene DelegateCommands Bindung je nach Clickmode-Wert (Press/Release)
Wir verwenden das MVVM Muster in Verbindung mit DelegateCommands. Also normalerweise band ich einen Befehl an die Schaltfläche wie folgen aus:
<Button Command="{Binding SetXYZActivatedCommand}" />
Ich muß verschiedene Befehle ausführen, wenn die Taste gedrückt wird und wenn die Taste wieder losgelassen wird. Meine Idee war folgende:
<Button Grid.Row="3" x:Name="TestButtonObj" Content="asdlknm">
<Button.Template>
<ControlTemplate TargetType="{x:Type Button}">
<Border x:Name="border" CornerRadius="80" Background="LightBlue">
<ContentPresenter Name="content" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsPressed" Value="True">
<Setter TargetName="border" Property="Background" Value="Aqua" />
<Setter TargetName="content" Property="Content" Value="Pressed" />
</Trigger>
<Trigger Property="ClickMode" Value="Press">
<Setter TargetName="TestButtonObj" Property="Command" Value="{Binding SetPttDeactivatedCommand}" />
</Trigger>
<Trigger Property="ClickMode" Value="Release">
<Setter Property="Button.Command" Value="{Binding SetPttActivatedCommand}" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Button.Template>
</Button>
Das Problem ist, dass TestButtonObj unbekannt ist. Ok ich habe akzeptiert, dass ich nicht auf das übergeordnete Objekt zugreifen kann. Ohne TargetName = "TestButtonObj" kompiliert es, aber der Befehl wird nicht ausgeführt. Mhhhh ...
Ok habe ich versucht, die folgenden, aber es kann nicht funktionieren ... Command ist kein Abhängigkeitseigenschaft (hoffentlich erhalten Sie mich aus diesem Labyrinth)
<Button Grid.Row="2" Content="CommandBindings">
<Button.CommandBindings>
<CommandBinding Command="{Binding SetPttActivatedCommand}" />
</Button.CommandBindings>
Auf diese Punkt, ich steckte. Ich weiß nicht, ob der Weg völlig falsch war. Ich lese den ganzen Tag über Befehle und Bindung, aber ich verstehe nicht. Ich hoffe, jemand kann mir den Weg zeigen.
Ich postete auch heute Morgen hier: http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/cc68b10c-4e1c-4344-9f00-710185d4b1b0 Wenn ich eine Antwort bekomme, werde ich es hier auch posten.
Vielen Dank (im Voraus), Totti
Danke, sieht gut aus Hoffentlich habe ich morgen die Zeit, ein bisschen mehr zu recherchieren ... Übrigens habe ich keine Lizenzinformation gesehen: Können wir es benutzen? in einer kommerziellen App? – TottiW
Ich glaube nicht, dass es eine Lizenz gibt. Der Autor sagt: "Dieser Code wurde nicht oft getestet, also erwarten Sie Bugs etc ... Wenn Sie dies in Produktionscode verwenden möchten, tun Sie dies auf eigene Gefahr" –
Ich weiß nicht, was Ihr ultimatives Ziel ist, aber Wenn Sie eine Aktion so lange ausführen möchten, wie die Schaltfläche gedrückt wird, sollten Sie sich den ReapeatButton ansehen, der kontinuierlich ein Klickereignis auslöst, solange er gedrückt wird. –