Наследование стоимости имущества - PullRequest
5 голосов
/ 03 февраля 2009

После долгих поисков в MSDN и других источниках я в основном обнаружил, что «некоторые» свойства Dependancy действительно поддерживают наследование значений свойств, подобное WPF. Однако, насколько я могу судить, нет определенного списка, какие свойства делают, а какие нет. Я знаю свойства шрифта, например, делать; все же HorizontalContentAlignment не делает. Я также видел другую ветку в этом форуме, которая указывает, что список приоритетов DP не включает наследование значений (http://msdn.microsoft.com/en-us/library/cc265148(VS.95).aspx#listing).

Более того, кажется, что невозможно даже применить наследуемые метаданные к любому настраиваемому DP, поэтому кажется, что платформа silverlight настроила его специально для определенных свойств. Мне нужно точно знать, какие свойства зависимости действительно поддерживают наследование значений свойств. Если я пропустил очевидную статью по этому вопросу или ветку, то приношу свои извинения, но я довольно тщательно искал.

Спасибо.

Ответы [ 2 ]

4 голосов
/ 04 февраля 2009

Вы упоминаете, что свойства Font поддерживают это, поэтому я немного покопался в рефлекторе и нашел это интересным:

TextBlock

public static readonly DependencyProperty FontSizeProperty = DependencyProperty.RegisterCoreProperty(0x40003714, typeof(double));

Контроль

public static readonly DependencyProperty FontSizeProperty = DependencyProperty.RegisterCoreProperty(0x80003714, typeof(double));

Встроенный

public static readonly DependencyProperty FontSizeProperty = DependencyProperty.RegisterCoreProperty(0x3714, typeof(double));

Таким образом, все три из этих классов определяют FontSizeProperty, и используемый идентификатор выглядит очень похоже, как если бы этот первый бит был просто каким-то флагом. Так что, возможно, что-то происходит под покровом, которое позволяет то, что вы называете наследованием свойств, поскольку среда может передавать значения между этими похожими идентификаторами dp.

2 голосов
/ 14 мая 2009

См. Раздел «Информация о свойствах зависимости» MaxHeight (который не наследует значение родителя) и FontSize (который распространяется, как вы описали):

MaxHeight

FontSize


с веб-страница MSDN :

Свойство Значение Наследование

Элемент может наследовать значение свойства зависимости от своего родителя в дереве.

Примечание:

Поведение наследования значений свойств не включено глобально для всех свойств зависимостей, поскольку время вычисления наследования оказывает некоторое влияние на производительность. Наследование значений свойств обычно включается только для свойств, где конкретный сценарий предполагает, что наследование значений свойств является подходящим. Чтобы определить, наследуется ли свойство зависимости, просмотрите раздел Информация о свойстве зависимости для этого свойства зависимости в ссылке SDK .


...