x:Shared Özniteliği
Olarak ayarlandığında false , ö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ı IÇIN WPF kaynak alımı davranışını değiştirir.
XAML Öznitelik Kullanımı
<ResourceDictionary>
<object x:Shared="false".../>
</ResourceDictionary>
Açıklamalar
x:Shared , XAML Language XAML ad alanı ile eşlenir ve .NET XAML Hizmetleri ve XAML okuyucuları tarafından geçerli bir XAML dili öğesi olarak tanınır. Bununla birlikte, belirtilen özellikleri x:Shared yalnızca WPF uygulamaları ve WPF XAML ayrıştırıcısı için geçerlidir. WPF içinde x:Shared yalnızca BIR WPF içinde bulunan bir nesneye uygulandığında öznitelik olarak faydalıdır ResourceDictionary . Diğer kullanımlar ayrıştırma özel durumları veya diğer hataları oluşturmaz, ancak hiçbir etkisi yoktur.
Öğesinin anlamı x:Shared xaml dil belirtiminde belirtilmemiş. .NET XAML Hizmetleri üzerinde derlenenler gibi diğer XAML uygulamaları, kaynak paylaşım desteği sunmamalıdır. Bu tür XAML uygulamaları destekleyici çerçevede değerleri de kullanan benzer davranışlar sağlayabilir x:Shared .
WPF 'de, x:Shared kaynaklar için varsayılan koşul true . Bu koşul, belirli bir kaynak isteğinin her zaman aynı örneği döndürdüğü anlamına gelir.
Bir kaynak API 'SI aracılığıyla döndürülen FindResource veya bir nesneyi doğrudan bir içinde değiştiren bir nesneyi değiştirme ResourceDictionary , özgün kaynağı değiştirir. Bu kaynağa yapılan başvurular dinamik kaynak başvurularıyla, bu kaynağın tüketicileri değiştirilen kaynağı alır.
Kaynak başvuruları statik kaynak başvurularıyla, XAML işleme zamanından sonra kaynakta yapılan değişiklikler ilgisizdir. Statik ve dinamik kaynak başvuruları hakkında daha fazla bilgi için bkz. xaml kaynaklarına genel bakış (WPF .net).
Açıkça belirtilmesi x:Shared="true" nadiren yapılır, çünkü zaten varsayılan değer. WPF nesne modelinde doğrudan kod eşdeğeri yoktur x:Shared ; yalnızca BIR xaml kullanımında belirtilebilir ve .net xaml Hizmetleri ve xaml okuyucuları kullanılarak işlenirse, yükleme yolundaki bir ara xaml düğüm akışında işlenmelidir.
Bir senaryosu x:Shared="false" , bir FrameworkElement veya türetilmiş bir FrameworkContentElement sınıfı kaynak olarak tanımlarsanız ve sonra öğe kaynağını bir içerik modeline tanıtdıysanız. x:Shared="false" bir öğe kaynağının aynı koleksiyonda birden çok kez tanıtılmalarını sağlar (örneğin, UIElementCollection ). x:Shared="false"Bu geçersizdir çünkü koleksiyon içeriklerinin benzersizlik düzeyini zorluyor. Ancak, bu x:Shared="false" davranış aynı örneği döndürmek yerine kaynağın bir özdeş örneğini oluşturur.
İçin başka bir senaryo x:Shared="false" da Freezable animasyon değerleri için bir kaynak kullanıyorsanız ancak kaynağı animasyon temelinde değiştirmek istiyordur.
Dize işleme, false büyük/küçük harfe duyarlı değildir.
WPF 'de x:Shared yalnızca aşağıdaki koşullarda geçerlidir:
ResourceDictionaryÖğesini içeren öğeleri içeren öğesi
x:Sharedderlenmesi gerekir. ResourceDictionaryGevşek XAML içinde olamaz veya temalar için kullanılamaz.ResourceDictionaryÖğeleri içeren öğesi başka bir içinde iç içe olmamalıdır ResourceDictionary . Örneğin, bir
x:Sharedöğesi zaten bir öğe olan içindeki öğeleri için kullanamazsınız ResourceDictionaryStyleResourceDictionary .