사용자 정의 컨트롤을 개발 중이며 라우팅 된 이벤트를 사용하려고합니다. RoutedEventHandler와 RoutedPropertyChangedEventHandler라는 두 대표가 제공됩니다. 첫 번째는 정보를 전달하지 않으며 두 번째는 속성 변경의 이전 값과 새로운 값을 사용합니다. 그러나 단일 정보를 전달해야하므로 Action 대리자와 동일한 정보를 원합니다. 제공된 것이 있습니까? 액션 대리인을 사용할 수 있습니까?WPF에서 전달 된 이벤트 - 작업 대리자 사용
2
A
답변
5
추가 데이터를 보유 할 RoutedEventArgs의 하위 클래스를 만들고 EventHandler<T>
을 args 클래스와 함께 사용하십시오. 이것은 RoutedEventHandler로 변환 될 수 있으며 추가 데이터는 핸들러에서 사용할 수 있습니다.
모든 유형의 단일 매개 변수를 보유하는 일반 RoutedEventArgs 클래스를 만들 수 있지만 일반적으로 새 클래스를 만들면 코드를 읽기 쉽고 수정하여 나중에 더 많은 매개 변수를 포함 할 수 있습니다.
public class FooEventArgs
: RoutedEventArgs
{
// Declare additional data to pass here
public string Data { get; set; }
}
public class FooControl
: UserControl
{
public static readonly RoutedEvent FooEvent =
EventManager.RegisterRoutedEvent("Foo", RoutingStrategy.Bubble,
typeof(EventHandler<FooEventArgs>), typeof(FooControl));
public event EventHandler<FooEventArgs> Foo
{
add { AddHandler(FooEvent, value); }
remove { RemoveHandler(FooEvent, value); }
}
protected void OnFoo()
{
base.RaiseEvent(new FooEventArgs()
{
RoutedEvent = FooEvent,
// Supply the data here
Data = "data",
});
}
}
관련 문제
- 1. 대리자 사용 및 이벤트 선언
- 2. wpf에서 매개 변수 전달 이벤트 발생
- 3. UISegmentedControl 대리자/터치 이벤트
- 4. 작업 대리자 - 선언 수정
- 5. Silverlight 이벤트 대리자
- 6. 대리자 형식과 메서드 사용
- 7. 동적으로 추가 된 컨테이너에 대리자() 사용
- 8. NSXmlParser에 다른 대리자 사용
- 9. C# 대리자/이벤트 처리 정보
- 10. 대리자 메서드 사용 방법
- 11. PowerShell에서 정적 대리자 속성을 설정하거나 (생성자에 대리자 전달)
- 12. VB.NET API 대리자 및 이벤트
- 13. WPF에서 비트 맵 작업
- 14. 동적으로 추가 된 자식 컨트롤에서 대리자 이벤트 처리기를 할당하십시오.
- 15. 별도의 AppDomain에서 대리자 전달 및 실행
- 16. WPF에서 내부 FriendAccessAllowedAttribute 사용
- 17. C# 내부 대리자 및 공개 이벤트
- 18. 이벤트 로그에 쓰기 Windows 예약 된 작업
- 19. FLEX에서 이벤트 재 전달
- 20. 직접 전달 이벤트 질문
- 21. 프리즘을 사용하지 않고 WPF에서 느슨하게 결합 된 이벤트
- 22. Java에서의 비동기 이벤트 전달
- 23. WPF에서 누락 된 기능
- 24. WPF에서 사용자 정의 컨트롤에 DataContext 전달
- 25. WPF에서 DatePicker로 작업 : 빼기, 더하기 문제
- 26. WPF에서 키보드 이벤트 시뮬레이션 Textbox
- 27. C# 대리자 및 이벤트 디자인 도움말
- 28. ASP.NET 마스터 페이지가있는 이벤트 및 대리자
- 29. WPF에서 System.Drawing.Printing.PrintDocument 사용
- 30. wpf에서 종속성 속성 사용
대단히 감사합니다. 매우 유용합니다! – devdigital