불행히도 이것은 성능 저하가 나타날 곳이 WPF 엔진의 깊은 곳이기 때문에 상대적인 성능을 직접 비교하는 것이 매우 어려운 경우입니다. WPF 초창기에 StaticResource 사용은 권장 된 표준 성능 튜닝 변경 중 하나였으며 우리는 조직에서이를 엄격히 준수하고 다른 사람들에게 권장하는 경향이있었습니다. Blend가 동적 인 모든 작업을 수행 했음에도 불구하고 실제로 디자인 타임에 다른 파일의 리소스를 렌더링하는 데 도움이되었지만 정말 짜증났습니다.
시간이 지남에 따라 내 개인적인 경험으로 인해이 점에 대한 견해가 바뀌었지만 Microsoft의 Blend 팀의 의견도 반영되었습니다. 아마도 Blend는 WPF로 작성되었으며 응용 프로그램이 실행되는 동안 즉시 전환 할 수있는 완전한 대체 테마 (Light)를 가지고 있습니다. 이것은 DynamicResource를 거의 모든 스타일링에 사용했기 때문에 가능합니다. 그들에 따르면, 이것이 실제로 그들에게 실질적인 문제를 일으키지는 않았다. Blend가 아마도 가장 널리 사용되는 WPF 응용 프로그램이라는 점을 감안할 때, 나는 그들의 관점에 상당한 비중을 두는 경향이 있습니다.
다른 고려 사항은 DynamicResource의 실제 유용성입니다. 즉석에서 스타일을 변경할 수있는 기능은 리소스 계층 구조를 구성하는 데있어 유연성을 제공하므로 공유 스타일을 훨씬 쉽게 관리 할 수 있습니다. StaticResource 레퍼런스가 런타임시에 폭발 한 상황에 직면했을 것으로 확신합니다. 왜냐하면 그것이 지적한 리소스가 다른 계층의 계층에로드되기 때문입니다.
분명히 StaticResource는 적시에 사용할 수있는 특정 키를 가리키는 데 매우 유용합니다. XAML을 손으로 쓸 때 나는 항상 그것을 사용하는 경향이 있습니다. 그러나 디자이너가 Blend에서 XAML을 생성하게함으로써 얻을 수있는 생산성을 감안할 때 작은 성능 향상은 손으로 모든 것을 정적으로 유지하는 데 드는 오버 헤드의 가치가 없을 것입니다.
"StaticallyResource는 분명히 특정 키를 가리키는 데 매우 유용합니다. 당신은 적시에 이용할 수있을 것입니다. " DynamicResource가 컴파일 타임 형식 검사를 잃고 런타임으로 이동한다는 의미입니까? – scobi
예. 대부분의 경우 해결되지 않은 DynamicResource 참조는 기본값 (예 : 검은 색 브러시)을 가져오고 표시 할 키를 기다립니다. 컴파일러가 그 상황을 스스로 검증하는 방법은 실제로 없습니다. –
정말 고마워, 고마워 !! –