문제

ListBoxItems에 대해 정의 된 스타일이있는 ListBox가 있습니다.이 스타일 안에는 라벨과 버튼이 있습니다.그 버튼 중 하나는 내 페이지 (또는 해당 스타일을 사용하는 모든 페이지)에서 처리 할 수있는 클릭 이벤트를 정의하고 싶습니다.내 ListBoxItems 스타일의 이벤트를 처리하기 위해 WPF 페이지에 이벤트 핸들러를 어떻게 생성합니까?

다음은 내 스타일입니다 (영향을받는 코드 만 해당) : 라코 디스

감사합니다!

도움이 되었습니까?

해결책

RoutedCommand 를 살펴보세요. .

다음과 같이 myclass에서 명령을 정의하십시오. 라코 디스

이제 다음 명령으로 버튼을 정의하세요. 라코 디스

추가 정보를 보려면 CommandParameter를 사용할 수 있습니다.

이제 마지막으로 명령을 들어보세요.

멋진 일을하고 싶은 클래스의 생성자에 다음을 배치합니다. 라코 디스

또는 XAML : 라코 디스

그리고 CommandBinding에 필요한 위임을 구현합니다. 라코 디스

시각적 트리의 모든 곳에서이 명령을들을 수 있습니다!

도움이 되었기를 바랍니다.

PS CanExecute가 그렇게 말하면 명령을 비활성화하는 CanExecute 델리게이트로 CommandBinding을 정의 할 수도 있습니다. :)

PPS 다음은 또 다른 예입니다. WPF의 RoutedCommands

다른 팁

Arcturus가 게시 한대로 RoutedCommands는이를 달성하는 좋은 방법입니다.그러나 DataTemplate에 버튼이 하나만있는 경우 이것은 조금 더 간단 할 수 있습니다.

다음과 같이 호스트 ListBox에서 버튼의 클릭 이벤트를 실제로 처리 할 수 있습니다. 라코 디스

ListBox에 포함 된 모든 버튼은 클릭시 해당 이벤트를 실행합니다.이벤트 핸들러 내에서 e.OriginalSource를 사용하여 클릭 한 버튼에 대한 참조를 다시 가져올 수 있습니다.

분명히 ListBoxItems에 두 개 이상의 버튼이있는 경우 너무 단순하지만 대부분의 경우 제대로 작동합니다.

사용자 정의 컨트롤 (.ascx)을 만들어 목록 상자를 저장할 수 있습니다.그런 다음 페이지에 대한 공개 이벤트를 추가합니다. 라코 디스

그런 다음 사용자 컨트롤의 버튼 클릭 이벤트 라코 디스

다른 방법과 마찬가지로 이벤트를 통해 개체를 전달할 수도 있습니다.이렇게하면 사용자 컨트롤이 페이지에서 삭제할 항목을 알릴 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top