x:Shared — Atrybut
W przypadku ustawienia na false
wartość program modyfikuje zachowanie pobierania zasobów WPF, tak aby żądania dla zasobu przypisanego tworzyło nowe wystąpienie dla każdego żądania zamiast współużytkować to samo wystąpienie dla wszystkich żądań.
Użycie atrybutu języka XAML
<ResourceDictionary>
<object x:Shared="false".../>
</ResourceDictionary>
Uwagi
x:Shared
jest mapowany na przestrzeń nazw XAML języka XAML i jest rozpoznawany jako prawidłowy element języka XAML przez usługi XAML platformy .NET i jego czytniki XAML. Jednak określone możliwości x:Shared
programu są istotne tylko dla aplikacji WPF i analizatora WPF XAML. W WPF x:Shared
jest przydatny tylko jako atrybut, gdy jest stosowany do obiektu, który istnieje w WPF ResourceDictionary. Inne użycia nie zgłaszają wyjątków analizy ani innych błędów, ale nie mają wpływu.
x:Shared
Znaczenie nie jest określone w specyfikacji języka XAML. Inne implementacje XAML, takie jak te, które są oparte na usługach XAML platformy .NET, nie muszą zapewniać obsługi udostępniania zasobów. Takie implementacje XAML mogą zapewnić podobne zachowanie w strukturze pomocniczej, która również korzystała z x:Shared
wartości.
W WPF domyślnym x:Shared
warunkiem dla zasobów jest true
. Ten warunek oznacza, że każde żądanie zasobu zawsze zwraca to samo wystąpienie.
Modyfikowanie obiektu zwracanego za pośrednictwem interfejsu API zasobów, takiego jak FindResource, lub modyfikowanie obiektu bezpośrednio w obiekcie ResourceDictionary, zmienia oryginalny zasób. Jeśli odwołania do tego zasobu były odwołaniami do zasobów dynamicznych, użytkownicy tego zasobu uzyskają zmieniony zasób.
Jeśli odwołania do zasobu były odwołaniami do zasobów statycznych, zmiany w zasobie po czasie przetwarzania XAML są nieistotne. Aby uzyskać więcej informacji na temat odwołań do zasobów statycznych i dynamicznych, zobacz Omówienie zasobów XAML (WPF .NET).
Jawne określanie x:Shared="true"
jest rzadko wykonywane, ponieważ jest to już ustawienie domyślne. Nie ma bezpośredniego odpowiednika x:Shared
kodu w modelu obiektów WPF. Można go określić tylko w użyciu XAML i musi być przetwarzany domyślnie w zachowaniu WPF lub w pośrednim strumieniu węzła XAML na ścieżce ładowania, jeśli jest przetwarzany przy użyciu usług XAML platformy .NET i czytników XAML.
Scenariuszem dla x:Shared="false"
programu jest zdefiniowanie FrameworkElement klasy lub FrameworkContentElement pochodnej jako zasobu, a następnie wprowadzenie zasobu do elementu con tryb namiotu l. x:Shared="false"
umożliwia wielokrotne wprowadzanie zasobu elementu w tej samej kolekcji (na przykład UIElementCollection). Bez x:Shared="false"
tego jest nieprawidłowe, ponieważ kolekcja wymusza unikatowość jego zawartości. x:Shared="false"
Jednak zachowanie powoduje utworzenie innego identycznego wystąpienia zasobu zamiast zwracania tego samego wystąpienia.
Innym scenariuszem Freezable jest x:Shared="false"
użycie zasobu dla wartości animacji, ale chcesz zmodyfikować zasób na podstawie animacji.
Obsługa false
ciągu nie uwzględnia wielkości liter.
W WPF x:Shared
jest prawidłowy tylko w następujących warunkach:
Element ResourceDictionary zawierający elementy z elementami
x:Shared
musi być skompilowany. Nie ResourceDictionary może być w luźnym języku XAML ani używanym dla motywów.Element ResourceDictionary zawierający elementy nie może być zagnieżdżony w obrębie innego ResourceDictionaryelementu . Na przykład nie można użyć elementu
x:Shared
dla elementów znajdujących ResourceDictionary się w obiekcie Style , który jest już elementem ResourceDictionary .
Zobacz też
.NET Desktop feedback