Значения свойства XAML: по умолчанию против локального против окружающего
Я пытался интерпретировать код XAML в проекте, который я унаследовал, и я хочу выяснить, откуда берутся некоторые значения в определенных элементах. Когда я смотрю на свойства объекта на панели "Свойства", я вижу квадраты рядом с каждым свойством. Белый квадрат указывает, что значение свойства является значением по умолчанию, черный квадрат указывает, что значение свойства является "локальным", что означает, что оно было изменено по умолчанию, и это изменение можно увидеть в теге XAML, а зеленый квадрат означает "окружающий" ".
К объектам применяются стили, так что я могу понять, что значения в окружающих свойствах должны поступать из словарей ресурсов. Я до сих пор не уверен, где искать источник значений, что я хочу сделать, чтобы изменить их. Мне трудно следить за документацией по окружающим свойствам, и она не отвечает на все мои вопросы, и я не нашел никакой документации, обсуждающей различия между стандартным, локальным и окружающим.
Если это подходящее место, чтобы спросить, может ли кто-нибудь объяснить и обсудить различия между стандартным, локальным и окружающим?
Есть ли слово, используемое для различия между этими типами значений свойств, то есть "по умолчанию" значение свойства "тип" или что?
И есть ли какие-либо типы значений свойств помимо этих трех?
1 ответ
Боже, какой у вас очаровательный профиль.;)
Я просто хочу упомянуть, что вы можете получить некоторую информацию об источнике значения свойства зависимостей, используя статический вспомогательный метод DependencyPropertyHelper.GetValueSource(DependencyObject, DependencyProperty)
в System.Windows
Пространство имен.
По умолчанию "по умолчанию" означает, что источник не указан, и поэтому значение берется из какого-то встроенного источника. Обратите внимание, что некоторые значения по умолчанию генерируются динамически и не являются постоянными. "Локальный" - это когда значение явно задано в этом конкретном объекте зависимости, переопределяя любые значения, которые он в противном случае наследовал бы. "Ambient" - это когда значение получено из другого источника, например стиля. Я бы сослался на различие между ними как различными источниками базовой стоимости.
И да, есть не только эти три. Если вы поставите атрибут TextBlock.FontFamily="Arial"
в вашем Window
Например, теги, текстовые блоки в этом окне будут наследовать это значение от него. Когда вы наблюдаете свойство на панели свойств и переворачиваете поле, оно говорит: "Унаследовано". Обратите внимание, что поле все еще зеленое, как и в "Ambient".
Существует фактически перечисление, которое может помочь осветить различные возможные источники базовой стоимости. Это называется BaseValueSource
,