1

XAML で型オブジェクトを取得しようとしています。

x:Type={...}

しかし、Silverlight ではサポートされていないことに気付きました。EnumerationExtension次の質問で(クラスで)使用しようとしていました:

列挙型プロパティを WPF の ComboBox にデータバインドする

XAML で型を渡すにはどうすればよいですか?C

4

2 に答える 2

1

if SL 5 then custom else with that returnMarkupExtension
BindingConvertervalue.GetType()


私の例:

public class TypeExtension : IMarkupExtension<Type>
{
    public string TypeName { get; set; }

    public TypeExtension() { }
    public TypeExtension(string typeName)
        : this()
    {
        if (typeName == null) throw new ArgumentNullException("typeName");

        TypeName = typeName;
    }

    public Type ProvideValue(IServiceProvider serviceProvider)
    {
        var typeResolver = (IXamlTypeResolver)serviceProvider.GetService(typeof(IXamlTypeResolver));
        var type = typeResolver.Resolve(TypeName);
        return type;
    }
}

SL 5 ではコンストラクターがサポートされていないため、XAML でプロパティ名を使用する必要があることに注意してください。

{me:Type TypeName=local:SomeClass}
于 2012-08-21T19:49:27.557 に答える
0

カスタムマークアップ拡張機能を作成できます(Silverlight 5以降で使用可能)

または、これを使用できます

于 2012-08-21T19:45:25.647 に答える