x:Shared Özniteliği
olarak false
ayarlandığında, WPF kaynak alma davranışını değiştirerek öznitelikli kaynağa yönelik isteklerin tüm istekler için aynı örneği paylaşmak yerine her istek için yeni bir örnek oluşturmasını sağlar.
XAML Öznitelik Kullanımı
<ResourceDictionary>
<object x:Shared="false".../>
</ResourceDictionary>
Açıklamalar
x:Shared
XAML dili XAML ad alanına eşlenir ve .NET XAML Hizmetleri ve XAML okuyucuları tarafından geçerli bir XAML dil öğesi olarak kabul edilir. Ancak, belirtilen özellikleri x:Shared
yalnızca WPF uygulamaları ve WPF XAML ayrıştırıcısı için geçerlidir. WPF'de, x:Shared
yalnızca bir WPF ResourceDictionaryiçinde bulunan bir nesneye uygulandığında öznitelik olarak yararlıdır. Diğer kullanımlar ayrıştırma özel durumları veya diğer hataları oluşturmaz, ancak hiçbir etkisi yoktur.
anlamı x:Shared
XAML dil belirtiminde belirtilmemiştir. .NET XAML Hizmetleri üzerinde derleme yapanlar gibi diğer XAML uygulamaları mutlaka kaynak paylaşımı desteği sağlamaz. Bu tür XAML uygulamaları, destekleyici çerçevede değerleri de kullanan x:Shared
benzer davranışlar sağlayabilir.
WPF'de kaynaklar için varsayılan x:Shared
koşuldur true
. Bu koşul, belirli bir kaynak isteğinin her zaman aynı örneği döndürdüğü anlamına gelir.
gibi FindResourcebir kaynak API'si aracılığıyla döndürülen bir nesneyi değiştirmek veya doğrudan içinde ResourceDictionarybir nesneyi değiştirmek özgün kaynağı değiştirir. Bu kaynağa yapılan başvurular dinamik kaynak başvurularıysa, bu kaynağın tüketicileri değiştirilen kaynağı alır.
Kaynağa yapılan başvurular statik kaynak başvurularıysa, XAML işleme süresinden sonra kaynakta yapılan değişiklikler önemsizdir. Statik ve dinamik kaynak başvuruları hakkında daha fazla bilgi için bkz . XAML kaynaklarına genel bakış (WPF .NET).
Açıkça belirtme x:Shared="true"
işlemi nadiren yapılır, çünkü bu zaten varsayılandır. WPF nesne modelinde için x:Shared
doğrudan kod eşdeğeri yoktur; yalnızca bir XAML kullanımında belirtilebilir ve .NET XAML Hizmetleri ve XAML okuyucuları kullanılarak işlenirse yük yolundaki bir ara XAML düğümü akışında veya varsayılan WPF davranışıyla işlenmelidir.
için x:Shared="false"
bir senaryo, kaynak olarak veya FrameworkContentElement türetilmiş bir FrameworkElement sınıf tanımlayıp öğe kaynağını con çadır modu l olarak tanıtmaktır. x:Shared="false"
bir öğe kaynağının aynı koleksiyonda (örneğin) birden çok kez tanıtılabilmesini UIElementCollectionsağlar. Koleksiyon x:Shared="false"
içeriğinin benzersizliğini zorladığı için bu geçersizdir. Ancak davranış x:Shared="false"
, aynı örneği döndürmek yerine kaynağın başka bir özdeş örneğini oluşturur.
Diğer bir senaryo x:Shared="false"
ise, animasyon değerleri için bir Freezable kaynak kullanmanız ancak kaynağı animasyon temelinde değiştirmek istemenizdir.
dize işleme büyük false
/küçük harfe duyarlı değildir.
WPF'de, x:Shared
yalnızca aşağıdaki koşullar altında geçerlidir:
ResourceDictionary ile
x:Shared
öğelerini içeren öğesinin derlenmiş olması gerekir. gevşek ResourceDictionary XAML içinde olamaz veya temalar için kullanılamaz.ResourceDictionary Öğeleri içeren, başka bir ResourceDictionaryiçinde iç içe yerleştirilmemelidir. Örneğin, içinde zaten bir ResourceDictionary öğe olan öğeler Style için kullanamazsınız
x:Shared
.ResourceDictionary
Ayrıca bkz.
.NET Desktop feedback