XAML で型オブジェクトを取得しようとしています。
x:Type={...}
しかし、Silverlight ではサポートされていないことに気付きました。EnumerationExtension
次の質問で(クラスで)使用しようとしていました:
列挙型プロパティを WPF の ComboBox にデータバインドする
XAML で型を渡すにはどうすればよいですか?C
XAML で型オブジェクトを取得しようとしています。
x:Type={...}
しかし、Silverlight ではサポートされていないことに気付きました。EnumerationExtension
次の質問で(クラスで)使用しようとしていました:
列挙型プロパティを WPF の ComboBox にデータバインドする
XAML で型を渡すにはどうすればよいですか?C
if SL 5 then custom
else with that returnMarkupExtension
Binding
Converter
value.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}
カスタムマークアップ拡張機能を作成できます(Silverlight 5以降で使用可能)
または、これを使用できます