2009-08-05 4 views
1

Aero 테마로 XP 또는 Vista를 실행할 때 사소한 조정이 필요한 사용자 지정 컨트롤이 있습니다. 테마를 검색하는 간단한 방법이 있습니다 (사용자가 테마를 변경할 수 있기 때문에 운영 체제 검색으로는 충분하지 않습니다). 이게 스타일 방아쇠?WPF의 Xaml에서 현재 테마를 감지하는 방법은 무엇입니까?

내가 필요한 모양을 얻기 위해 비스타에 작은 마진 변경 사항을 적용해야합니다

 <Setter Property="Margin" 
       Value="0,-1,0,-1" /> 

위의 세터는 현재 무조건 (예를 들어하지 트리거에서)하지만, 두 가지 버전을 가지고 저를 필요로한다.

이상적으로 솔루션은 Xaml 만 있어야하지만, 필요한 경우 DataTrigger에 연결할 속성을 노출 할 수 있습니다.

답변

1

여백 설정을 취하고 변환 방법에서 플랫폼/테마 확인을 수행하는 ValueConverter을 작성할 수 있습니다.

+0

나는 이것을 고려했지만, 디자이너 논리를 백엔드로 이동시키고 Xaml의 테마를 감지 (또는 거기에 투영)하면 Xaml이 시각적 인 외관을 담당하게됩니다. –

+0

@Sean : 변환기는 바인딩에 유용하지만이 경우에는 바인딩이 없습니다. 아마 마크 업 확장이 더 적절할 것입니다. @ 레이 : 변환기 또는 마크 업 확장 프로그램은 "백엔드"가 아닙니다 ... 프런트 엔드 작업을 수행하는 상용구 코드 일뿐입니다. XAML에서 모든 것을 절대적으로 수행한다면 많이 성취하지 않을 것입니다.) –

+0

@ 토마스, 저는 XAML에서 모든 것을 할 수는 없다는 것을 알고 있습니다. 그러나 코드가 일반적인 정보를 노출하고 결정을 내리지 않기를 바랍니다. 표시. @ Sean의 대답을 다시 읽은 것만으로도 그의 포인트 (이마를 때리는 것)의 일부를 놓친 것 같습니다. 내가 실제로했던 결과는 "CurrentTheme"속성이 포함 된 일반 설정 MVVM을 노출하여 "Luna"또는 "Aero"테마를 감지 할 수있게합니다. –

관련 문제