x:Shared 특성
false
설정하면 특성이 지정된 리소스에 대한 요청이 모든 요청에 대해 동일한 인스턴스를 공유하는 대신 각 요청에 대해 새 인스턴스를 만들 수 있도록 WPF 리소스 검색 동작을 수정합니다.
XAML 특성 사용
<ResourceDictionary>
<object x:Shared="false".../>
</ResourceDictionary>
발언
x:Shared
XAML 언어 XAML 네임스페이스에 매핑되고 .NET XAML 서비스 및 해당 XAML 판독기에서 유효한 XAML 언어 요소로 인식됩니다. 그러나 x:Shared
명시된 기능은 WPF 애플리케이션 및 WPF XAML 파서와만 관련이 있습니다. WPF에서 x:Shared
WPF ResourceDictionary내에 있는 개체에 적용되는 경우에만 특성으로 유용합니다. 다른 사용법은 구문 분석 예외 또는 기타 오류를 throw하지 않지만 아무런 영향을 주지 않습니다.
x:Shared
의미는 XAML 언어 사양에 지정되지 않았습니다. .NET XAML 서비스를 기반으로 하는 것과 같은 다른 XAML 구현은 리소스 공유 지원을 반드시 제공하지는 않습니다. 이러한 XAML 구현은 x:Shared
값을 사용하는 지원 프레임워크에서도 유사한 동작을 제공할 수 있습니다.
WPF에서 리소스에 대한 기본 x:Shared
조건은 true
. 이 조건은 지정된 리소스 요청이 항상 동일한 인스턴스를 반환한다는 것을 의미합니다.
FindResource같은 리소스 API를 통해 반환되는 개체를 수정하거나 ResourceDictionary내에서 직접 개체를 수정하면 원래 리소스가 변경됩니다. 해당 리소스에 대한 참조가 동적 리소스 참조인 경우 해당 리소스의 소비자는 변경된 리소스를 가져옵니다.
리소스에 대한 참조가 정적 리소스 참조인 경우 XAML 처리 시간 이후의 리소스 변경은 관련이 없습니다. 정적 및 동적 리소스 참조에 대한 자세한 내용은 XAML 리소스 개요(WPF .NET)참조하세요.
x:Shared="true"
명시적으로 지정하는 작업은 거의 수행되지 않습니다. 이는 이미 기본값이기 때문입니다. WPF 개체 모델에는 x:Shared
해당하는 직접 코드가 없습니다. XAML 사용량에서만 지정할 수 있으며, .NET XAML Services 및 해당 XAML 판독기를 사용하여 처리되는 경우 기본 WPF 동작 또는 부하 경로의 중간 XAML 노드 스트림에서 처리해야 합니다.
x:Shared="false"
시나리오는 FrameworkElement 또는 FrameworkContentElement 파생 클래스를 리소스로 정의한 다음 요소 리소스를 콘텐츠 모델에 도입하는 것입니다.
x:Shared="false"
동일한 컬렉션(예: UIElementCollection)에서 요소 리소스를 여러 번 도입할 수 있습니다.
x:Shared="false"
없는 경우 컬렉션이 콘텐츠의 고유성을 적용하기 때문에 유효하지 않습니다. 그러나 x:Shared="false"
동작은 동일한 인스턴스를 반환하는 대신 리소스의 다른 동일한 인스턴스를 만듭니다.
x:Shared="false"
또 다른 시나리오는 애니메이션 값에 Freezable 리소스를 사용하지만 애니메이션별로 리소스를 수정하려는 경우입니다.
false
문자열 처리는 대/소문자를 구분하지 않습니다.
WPF에서 x:Shared
다음 조건에서만 유효합니다.
x:Shared
있는 항목이 포함된 ResourceDictionary 컴파일해야 합니다. ResourceDictionary 느슨한 XAML 내에 있거나 테마에 사용할 수 없습니다.항목을 포함하는 ResourceDictionary 다른 ResourceDictionary중첩되어서는 안 됩니다. 예를 들어 이미 ResourceDictionary 항목인 Style 내에 있는 ResourceDictionary 항목에는
x:Shared
사용할 수 없습니다.
참고 항목
.NET Desktop feedback