Udostępnij za pośrednictwem


x:Shared — Atrybut

W przypadku ustawienia na falsewartość 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:

Zobacz też