2014-02-03 2 views
1

Я думаю, что название объясняет все это.Есть ли способ писать пользовательские атрибуты, такие как x: Name или x: Shared в Xaml?

Я ищу способ расширения xaml с помощью настраиваемых атрибутов. Я знаю, что есть x: Name, x: Key, x: Shared, x: Class, но есть способ писать пользовательские атрибуты.

Кто-нибудь пробовал это? Я не ищу привязанные свойства зависимостей.

Я ищу эти расширения

+2

Что вы хотите сделать, чтобы эти приложенные вами свойства не дали вам? –

+0

Например, прикрепленные свойства могут быть прикреплены только к объектам зависимостей, что означает, что они не могут быть помещены в ResourceDictionary или в типы, которые не наследуют объект зависимостей. –

ответ

3

Короткий ответ: нет, вы не можете.

Директивы x: * непосредственно считываются анализатором XAML. Посмотрите на x: Name или x: Key, например. Для них не существует соответствующего прикрепленного свойства, и оба они инициируют четкое, специфическое поведение в синтаксическом анализаторе.

Когда x: имя найдено, найден текущий ток NameScope и добавленный к нему элемент с указанным именем в качестве ключа. Подобная обработка выполняется с помощью директивы x: Key, используя интерфейс IDictionary, как вы сказали.

И поскольку WPF не предоставляет способ расширить парсер (что является позором), то, что вы просили, невозможно.

+0

Я боялся, что не могу. Есть ли другой способ прикрепления данных к объекту non dependency? –

+0

Я боюсь, что нет ... но вы можете создать обертку объекта зависимостей для своих данных ?! –

+0

Его о ResourceDictionaries .. Я не могу иметь объект зависимости как самый верхний элемент в файле xaml ресурса. Позже я не смогу ссылаться на него. –

0

Я думаю, что вы ищете класс MarkupExtension. Подробности на MSDN можно найти here.

+0

MarkupExtension должен использоваться только как значение для свойства. Вы не можете использовать их для хранения дополнительных данных. Это хорошая идея, хотя :) –

Смежные вопросы