Значения свойства XAML: по умолчанию против локального против окружающего - PullRequest
0 голосов
/ 08 мая 2018

Я пытался интерпретировать код XAML в проекте, который я унаследовал, и я хочу выяснить, откуда поступают некоторые значения в определенных элементах. Когда я смотрю на свойства объекта на панели «Свойства», я вижу квадраты рядом с каждым свойством. Белый квадрат указывает, что значение свойства является значением по умолчанию, черный квадрат указывает, что значение свойства является «локальным», что означает, что оно было изменено по умолчанию, и это изменение можно увидеть в теге XAML, а зеленый квадрат означает «окружающий» . "

Существуют стили, применяемые к объектам, так что я могу интуитивно понять, что значения в окружающих свойствах должны поступать из словарей ресурсов. Я все еще не уверен, где искать источник значений, что я хочу сделать, чтобы изменить их. Мне трудно следовать документации для окружающих свойств, и она не отвечает на все мои вопросы, и я не нашел никакой документации, в которой обсуждались бы различия между стандартным, локальным и окружающим.

Если это подходящее место, чтобы спросить, может ли кто-нибудь объяснить и обсудить различия между стандартным, локальным и окружающим?

Есть ли слово, используемое для различения этих типов значений свойств, то есть "по умолчанию" значение свойства "тип" или что?

И есть ли какие-либо типы значений свойств помимо этих трех?

1 Ответ

0 голосов
/ 02 августа 2018

Боже, какой у вас очаровательный профиль. ;)

Я просто хочу упомянуть, что вы можете получить некоторую информацию об источнике значения свойства зависимости, используя статический вспомогательный метод DependencyPropertyHelper.GetValueSource(DependencyObject, DependencyProperty) в пространстве имен System.Windows.

«По умолчанию» означает, что источник не указан, и поэтому значение взято из некоторого встроенного источника. Обратите внимание, что некоторые значения по умолчанию генерируются динамически и не являются постоянными. «Локальный» - это когда значение явно задано в этом конкретном объекте зависимости, переопределяя любые значения, которые оно иначе унаследовало бы. «Ambient» - это когда значение получено из какого-то другого источника, такого как стиль. Я бы сослался на различие между ними как различными источниками базовой стоимости.

И да, есть не только эти три. Например, если вы поместите атрибут TextBlock.FontFamily="Arial" в тег Window, текстовые блоки в этом окне будут наследовать это значение от него. Когда вы наблюдаете свойство на панели свойств и переворачиваете поле, оно говорит: «Унаследовано». Обратите внимание, что поле все еще зеленое, как и в случае с «Ambient».

На самом деле существует перечисление, которое может помочь осветить различные возможные источники базовых значений. Это называется BaseValueSource.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...