Можно ли передать targetType MultiBinding преобразователям дочерних привязок? - PullRequest
0 голосов
/ 06 сентября 2018

У нас есть странный случай, когда Binding, который используется как дочерний элемент для MultiBinding, нуждается в его Converter s Convert методе, чтобы знать конечный тип данных, с которым MultiBinding связан.

Для обычного Binding с Converter, если он связан со свойством Text TextBlock, метод Convert получит System.string в своем аргументе targetType.

Однако, если тот же Binding вместо этого добавляется как дочерний элемент MultiBinding, даже если этот MultiBinding назначен самому свойству Text, все дочерние элементы Binding * Converter Convert методы получат System.object в качестве аргумента targetType, а не System.string. Этот вид имеет смысл, поскольку технически их целью является теперь MultiBinding, а не свойство Text.

Тем не менее, мне интересно, можно ли его настроить так, чтобы информация передавалась ребенку Bindings. Я думаю, нет, но я подумал, что если кто-нибудь узнает, это будет S.O. сообщества.

1 Ответ

0 голосов
/ 06 сентября 2018

Хорошо, так что ... краткий ответ: «Нет, ты не можешь!» Тем не менее, длинный ответ «Да, вы можете, немного поработав!»

Хитрость в том, чтобы вместо того, чтобы дочерний Binding управлял конвертером, вы вызываете его вручную из собственного конвертера MultiBinding.

На самом деле я написал довольно длинное объяснение того, как все это работает здесь, на StackOverflow.com, в следующем ответе:

Как создать DynamicResourceBinding .

В частности, проверьте функции ProvideValue и WrapperConvert. Много комментариев, объясняющих, что происходит и почему.

...