Как я могу добавить логику к существующему обратному вызову свойства зависимости?

Главным, которым Вы должны быть обеспокоены, не является производительность, это - правильность, и от того аспекта метод, который Вы , вероятно хотите использовать для нечувствительного к регистру сравнения, также:

string.Compare(a, b, StringComparison.OrdinalIgnoreCase) == 0;

или

a.Equals(b, StringComparison.OrdinalIgnoreCase)

(Первый полезен, если Вы знаете, строки могут быть пустыми; последний более прост записать, знаете ли Вы уже, что по крайней мере одна строка является непустой. Я никогда не проверял производительность, но предполагаю, что это будет подобно.)

Ordinal или OrdinalIgnoreCase безопасная ставка, если Вы не знаете, что хотите использовать другой метод сравнения; получить информацию должно было принять решение , читает эту статью о MSDN.

11
задан Giffyguy 21 August 2009 в 04:30
поделиться

1 ответ

WPF объединит метаданные свойств для вас, когда вы вызываете OverrideMetadata, нет необходимости передавать их исходный объект метаданных. Итак, все, что вам нужно сделать, это

UIElement.RenderTransformOriginProperty.OverrideMetadata(typeof(foo), new PropertyMetadata(new PropertyChangedCallback(Origin_Changed)));

Одна вещь, о которой следует помнить, - иногда приведенный выше код вызывает исключение. Это происходит в двух случаях:

1. Исходные метаданные являются подклассом PropertyMetadata - я видел FrameworkPropertyMetadata и UIPropertyMetadata. Вам просто нужно использовать соответствующий в каждом случае.

2. Свойство зависимости доступно только для чтения, и вы ничего не можете с этим поделать.

22
ответ дан 3 December 2019 в 05:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: