저는 WPF 프로젝트에 버튼이 있으며 버튼을 누르고있을 때 동일한 명령을 계속 실행하려고합니다. RepeatButton을 사용할 수는 있지만 RepeatButton 컨트롤의 지연 및 간격 속성에 의존하는 대신 자체 태스크에서 실행이 완료되면 명령을 다시 실행하는 것이 좋습니다.버튼을 누르고 명령을 반복하십시오.
단추를 클릭하는 방법을 신경 쓰지는 않지만 명령 실행 시간이 오래 걸리며 실행 시간은 ExecuteParameter 값에 따라 달라집니다 (이 경우 컴퓨터의 물리적 위치를 나타내는 두 개의 튜플) .
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;
}
업데이트 : 내가 몇 사람이 모습을 촬영 한 자신의 머리를 찌르고있다 볼 수 있습니다. 누군가가 질문 자체를 개선 할 수있는 방법에 대한 의견이 있으면 의견을 환영합니다. 명성이 부족하여 아마도 내가 새로운 일이라고 추측 할 수 있습니다. 반복은 한 번 시작을 반복하는 사이에, 밀리 초 단위의 시간> 양 -
도중에 제 람다가 단순화 될 수있다!'_ => MotionControl = && 널 – abatishchev
우수 제안 MotionControl.InMotionCheckStatus'. 감사합니다 abatishchev. 그것의 장황하고 이상한 지금은 노력하고있는 동안 모든 구성 요소를 제대로 함께 작동 시키십시오. 나는 그것을 선적하기 전에 리팩터링 할 것이다. – AClark