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

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

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

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

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

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

1 ответ

Решение

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

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

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

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

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

Другие вопросы по тегам