스타일을 통해 이벤트 기능을 설정하려면 어떻게 해야 합니까?
마우스 인터랙션(MouseEnter, MouseLeave)에서 동일한 액션(코드 배후에 있는 함수 호출)을 생성하는 GUI 제어 요소가 몇 개 있습니다.
[편집] 이벤트 핸들러에서 스타일과 관계없는 기능을 실행하고 있습니다.
현재 각 컨트롤에서 이벤트 속성을 사용하고 있습니다.
<Button Name="Button" Content="Button 1"
MouseEnter="GeneralMouseEnter" MouseLeave="GeneralMouseLeave"
PreviewMouseDown="Button1_PreviewMouseDown" PreviewMouseUp="Button1_PreviewMouseUp" />
<Button Name="NotInteractingButton" Content="Button 2"
/><!-- this button has no MouseOver-effects -->
<ToggleButton Content="ToggleButton"
MouseEnter="GeneralMouseEnter" MouseLeave="GeneralMouseLeave" />
<!-- needs to use IsMouseDirectlyOver on the slider knob... -->
<Slider Name="HorizontalSlider"
MouseEnter="GeneralMouseEnter" MouseLeave="GeneralMouseLeave"
ValueChanged="Slider_ValueChanged" />
<Slider Name="VerticalSlider" Orientation="Vertical"
MouseEnter="GeneralMouseEnter" MouseLeave="GeneralMouseLeave"
ValueChanged="Slider_ValueChanged" />
이 예의 많은 컨트롤이 같은 두 함수를 "General Mouse Enter"와 "General Mouse Leave"라고 부르고 있기 때문에 이 동작을 캡슐화하는 스타일 등을 정의할 수 있으면 좋겠습니다.
[편집 - 설명]
이것은 나중에 일종의 플러그인이 될 것입니다.
(코드 및 XAML 파일을 임의의 GUI 프로그램에 포함시키고 각 대화형 제어 요소에 스타일을 설정합니다.)
웹에서 찾은 바로는EventTriggers
다음 예시와 같습니다.
<Style.Triggers>
<EventTrigger RoutedEvent="Click">
<EventTrigger.Actions>
<BeginAction TargetName="SomeAction" />
</EventTrigger.Actions>
</EventTrigger>
</Style.Triggers>
액션 내에서 함수를 호출해야 하는지, 어떻게 호출해야 하는지 알 수 없습니다.
- 각 컨트롤에 적용할 액션 + 트리거가 있는 스타일을 만들어 이 기능을 얻을 수 있습니까?어떻게 하는 거야?
- 하나의 컨트롤에 여러 스타일(복수 상호 작용 이벤트의 경우)을 할당하려면 어떻게 해야 합니까?
- 이런 행동을 할 수 있는 더 깨끗한 방법은 없을까?
- [편집]
예를 들어 내 GUI의 모든 슬라이더에서 마우스 조작을 하려면 어떻게 해야 합니까?
마틴,
EventSetter를 사용하여 스타일에서 직접 이벤트 핸들러를 할당할 수 있습니다.
<Style TargetType="{x:Type Button}">
<EventSetter Event="Click" Handler="SomeAction"/>
</Style>
@ColinE:
이벤트 와이어업을 수행하기 위해 스타일을 사용하는 것이 좋은 생각인지 잘 모르겠습니다.스타일은 정의상 컨트롤의 시각적 모양을 정의합니다.
유감스럽게도 이것은 WPF 스타일에 대한 일반적인 오해인 것 같습니다.그 이름은 당신이 말한 것처럼 단지 외모를 정의하기 위한 것이었음을 암시하지만, 실제로는 훨씬 더 많은 것을 의미합니다.특성 집합을 컨트롤에 할당하기 위한 바로 가기로 스타일을 보다 일반적으로 보는 것이 유용합니다.
언급URL : https://stackoverflow.com/questions/4460201/how-to-set-an-event-function-via-a-style
'programing' 카테고리의 다른 글
셸 스크립트에서 디렉토리 내의 파일 목록을 가져오려면 어떻게 해야 합니까? (0) | 2023.04.17 |
---|---|
git에서 삭제된 파일의 스테이징 해제 (0) | 2023.04.17 |
유닉스 명령어 "watch"를 사용한 색상 (0) | 2023.04.17 |
"find: paths must preference expression:" 현재 디렉토리에서 파일을 찾는 재귀 검색을 지정하려면 어떻게 해야 합니까? (0) | 2023.04.17 |
디스크에 로그를 백업한 후에도 로그 파일의 DBCC SHRINGFILE이 크기를 줄이지 않음 (0) | 2023.04.17 |