x: Общий атрибут
Обновлен: Ноябрь 2007
При установке false изменяется поведение поиска ресурса Windows Presentation Foundation (WPF) таким образом, что запросы к ресурсу создают новый экземпляр для каждого запроса, а не предоставляют общий доступ к тому же экземпляру для всех запросов.
Использование атрибута XAML
<ResourceDictionary>
<object x:Shared="false".../>
</ResourceDictionary>
Заметки
По умолчанию состояние x:Shared для ресурсов имеет значение true. Это состояние означает, что все запросы к данному ресурсу всегда возвращают один и тот же экземпляр. Изменение объекта, возвращаемого с помощью ресурса API-интерфейс, такого как FindResource, или изменение объекта непосредственно в ResourceDictionary приводит к изменению исходного ресурса. Если ссылки на этот ресурс были динамическими, потребители этого ресурса получат измененный ресурс. (Если ссылки на ресурс были статическими, изменения ресурса после обработки XAML не имеют значения. Сведения о статических и динамических ссылках на ресурс см. в разделе Общие сведения о ресурсах.)
Указание x:Shared = " true "является редким, поскольку оно уже установлено по умолчанию. Прямой эквивалент кода для x:Shared отсутствует.
x:Shared = " false " может использоваться при определении производного класса FrameworkElement или FrameworkContentElement в качестве ресурса, и при введении этого ресурса элемента в модель содержимого. x:Shared = " false" позволяет несколько раз вводить ресурс элемента в одну и ту же коллекцию (например, UIElementCollection). Без установки x:Shared = "false" это будет недопустимо, поскольку коллекция обеспечивает уникальность ее содержимого. Но свойство x:Shared = "false" в сущности создает другой идентичный экземпляр ресурса, а не возвращает тот же экземпляр.
Другим сценарием поведения для x:Shared = " false "является использование ресурса Freezable для значений анимации, что требует изменения ресурса для каждой анимации.
При обработке строки «false» не учитывается регистр.
x:Shared является допустимым только при следующих условиях:
Должен быть скомпилирован ResourceDictionary, содержащий элементы с x:Shared. ResourceDictionary не может быть в пределах свободного XAML или использоваться для темы.
ResourceDictionary, содержащий элементы, не должен быть вложен в другой ResourceDictionary. Например, нельзя использовать x:Shared для элементов в ResourceDictionary, который находится в Style, который уже находится в элементе ResourceDictionary.