Ich habe eine Schaltfläche in meinem WPF-Projekt und ich möchte es immer wieder ausführen, wenn ich die Taste gedrückt halte. Ich könnte RepeatButton verwenden, aber meine Präferenz wäre, dass der Befehl erneut ausgeführt wird, sobald er ausgeführt wurde (in seiner eigenen Task), anstatt sich auf die Delay- und Intervalleigenschaften des RepeatButton-Steuerelements zu verlassen.Taste gedrückt halten, um Befehle zu wiederholen
Ich hätte nichts dagegen, eine Button-Klick-Methode zu machen, aber die Befehlsaktion läuft lange und die Ausführungszeit hängt vom Wert des ExecuteParameters ab (in diesem Fall ein Doppel-Tupel, das eine physische Position einer Maschine darstellt) .
XAML:
<Button FontFamily="Marlett" FontSize="40" Content="5" HorizontalAlignment="Center" VerticalAlignment="Top" Margin="100" Width="100" Height="50"
Command="{Binding IncrBAnglePos}"
CommandParameter="{Binding ElementName=slider, Path=Value}">
</Button>
C#:
SystemCommands.AddSubSystemCommand(SystemRef, CommandNames.IncrAngle, new RelayCommand(
o =>
{
double AngleIncr = (double)o > 5 ? 5 : (double)o;
double nextX = MotionControl.LiveX;
double nextB = MotionControl.LiveB + AngleIncr;
nextB = nextB >= 45 ? 45 : nextB;
Task.Run(() =>
{
SystemCommands.ExecuteCommand(CommandNames.GotoPosition, new Tuple<double,double>(nextX, nextB));
});
},
_ =>
{
if (MotionControl == null)
return false;
return !MotionControl.InMotionCheckStatus;
}));
if (MotionControl != null)
{
MotionControl.MotionChanged += SystemCommands.GetRelayCommand(CommandNames.IncrAngle).CanExecutePropertyChangedNotification;
}
Update: ich ein paar Leute ihre Köpfe in eine haben stocherte einen Blick genommen zu sehen. Wenn jemand einen Vorschlag hat, wie ich die Frage selbst verbessern könnte, würde ich das Feedback begrüßen. Aus meiner mangelnden Reputation kann man wahrscheinlich erahnen, dass ich neu bin.
btw zweites Lambda vereinfacht werden:! '_ => Motion = null && MotionControl.InMotionCheckStatus' – abatishchev
Excellent Vorschlag. Danke abatischtschew. Es ist im Moment sehr ausführlich und komisch, während ich versuche, alle Komponenten richtig zusammen zu arbeiten. Ich werde vor dem Versand umgestalten. – AClark