#xaml #markup-extensions #silverlight-5.0
#xaml #разметка-расширения #silverlight-5.0
Вопрос:
Я хотел бы иметь MarkupExtension, который может быть инициирован только с одним значением, так же, как Binding
:
<TextBox Text="{Binding MyPath}"/>
вместо <TextBox Text="{Binding Path=MyPath}">
В WPF это делается с помощью ConstructorArgumentAttribute
, но этого не существует в Silverlight.
Я проверил наличие атрибутов в Path
свойстве Binding
, но не нашел никаких атрибутов, примененных к нему.
Есть идеи?
Комментарии:
1. Читая документацию, которую я нашел до сих пор, я не верю, что это возможно.
2. @Jeff Итак, как получилось, что команда SL сделала это!? Я не засну, пока не узнаю это 🙂 Я знаю, что это невозможно из коробки, они бы наверняка сделали это att. Я ищу обходной путь или, по крайней мере, объяснение того, как они это делают.
3. Я подозреваю, что у них есть какой-то частный / внутренний код, который позволяет им достигать этого на известных типах. Однако мы получаем только
IMarkupExtension
для игры, и это само по себе, похоже, не поддерживает его. При написании синтаксического анализатора они могут легко искать известные расширения, такие какBinding
, и предоставлять специальную обработку регистра.4. Но я думаю, что их слишком много (
Binding
,TemplateBinding
StaticResource
,RelativeSource
, и многие другие), на самом деле не имеет смысла, что они составили список известных типов и обратились к параметрам. Но я хотел бы услышать о любой идее, как они это сделали, если вам удастся перехватить ее с помощью Reflector .
Ответ №1:
На данный момент я понимаю, что это еще не реализовано.
Итак, если вы считаете эту функцию привлекательной, пожалуйста, продолжайте и проголосуйте за эту функцию здесь.
Надеюсь, этот ответ будет обновлен, как только у меня появятся какие-либо новости (надеюсь, это произойдет как можно скорее …).