Как создать MarkupExtension с нестроковыми параметрами? - PullRequest
1 голос
/ 16 декабря 2008

Я работаю над Custom MarkupExtension в приложении WPF. Каждый документированный пример, который я видел, использует строковые параметры из XAML для создания нового объекта. Можно ли использовать не строковый параметр?

Другими словами, как я могу сделать что-то подобное?

[MarkupExtensionReturnType(typeof(Uri))]
public class RefPackUriExtension : MarkupExtension
{
    object _assembly = null;

    public RefPackUriExtension() { }

    public RefPackUriExtension(object assembly)
    {
        this._assembly = assembly;
    }

    public override object ProvideValue(IServiceProvider serviceProvider)
    {
        //return an object by using the "_assembly" member somehow
    }
}

1 Ответ

0 голосов
/ 17 декабря 2008

Любые параметры вашего MarkupExtension подчиняются тому же поведению, что и свойства объектов CLR. Вы можете использовать TypeConverter, чтобы позволить пользователю предоставить string, преобразованный в целевой тип, или можете использовать другой MarkupExtension.

В качестве примера первого см. Класс ColorConverter. В качестве примера последнего см. Класс RelativeSource (который используется в Binding MarkupExtension).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...