MSDN says on event setters:EventSetters는
이벤트 호텔은 테마 리소스 사전에 포함 된 스타일로 사용할 수 없습니다. 이는 런타임에 테마 리소스 사전이 종종 느슨한 이진 XAML (BAML) 파일이기 때문에 처리기를 정의하는 코드 숨김이있을 수있는 범위가 정의되어 있지 않기 때문입니다. 상태
이것은 the first answer to this SO question에 의해 확인된다 :
리소스 XAML 파일 뒤에 코드를 가질 수는, 그들은 일반적으로 "느슨한 XAML"라고합니다. 당신은 그것에 대해 msdn EventSetter에 대해 읽을 수 있습니다.
그러나 아직 이벤트 설정자에 대한 제한 사항을 이해하지 못했습니다. 리소스 사전에 코드 숨김 파일을 사용하려고했습니다. 해당 리소스 사전의 스타일 내에서 정의 된 템플릿 내에 포함 된 컨트롤 이벤트에 대한 이벤트 처리기를 할당했습니다.
같은 리소스 딕셔너리의 스타일에 이벤트 설정기를 추가하면 예외가 발생합니다.
작동하는 특별한 경우를 맞았습니까?
또는 템플릿의 이벤트 처리기를 설정하는 것이 항상 효과가 있습니까? 그렇다면 동일한 리소스 사전의 스타일로 이벤트 설정기를 사용할 수없는 이유는 무엇입니까?
내 질문에 귀결 :
정확히 테마 리소스 사전이 자주 느슨해 진 XAML 것을 MSDN의 말의 의미는 무엇- 얼마나 자주, 정확히 무슨 상황?
테마 리소스 사전에 codebehind를 사용하셨습니까? –
@ voroninp : 예; 참조 "나는 리소스 딕셔너리를위한 코드 숨김 파일을 사용해 보았습니다." –
ResourceDictionary는 코드 숨김을 가질 수 있습니다.이 접근 방식은 MacDonald의 저서 [C# 2010의 Pro WPF]에 설명되어 있습니다. 사용하지 않는 스타일 이벤트 집합은 디자인에 불과하다고 생각하지만 그 이유는 무엇입니까? –