Silverlight 5: Установка конструкторааргумента в классе IMarkupExtension

#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:

На данный момент я понимаю, что это еще не реализовано.

Итак, если вы считаете эту функцию привлекательной, пожалуйста, продолжайте и проголосуйте за эту функцию здесь.

Надеюсь, этот ответ будет обновлен, как только у меня появятся какие-либо новости (надеюсь, это произойдет как можно скорее …).