記事のカテゴリー: C#、.NET9
XAMLでジェネリック型を扱うときに型パラメーター(例えばList<int>のint)はどのように記述するのでしょうか。
x:TypeArgumentsディレクティブ
XAMLのルート要素がジェネリック型の場合はx:TypeArgumentsディレクティブを使って型パラメーターを指定できます。
このx:TypeArgumentsディレクティブがもっと広範に使えたら便利なのですが。
XAML:
<local:InputDialog
x:TypeArguments="system:String"
xmlns:system="clr-namespace:System;assembly=mscorlib"
...>
参照
ラッパークラスで包む
ラッパークラスで包んであげるとXAMLで型パラメーターを指定する必要がなくなります。
C#:
public class StringNode : Node<string>
{
...
}
XAML:
<Window.Resources>
<local:StringNode ... />
</Window.Resources>
静的フィールドを使う
Type型のプロパティにジェネリック型を指定したいときは、任意のクラスにジェネリック型の静的フィールドを宣言してx:Staticで指定すると型パラメーターを指定する必要がなくなります。
C#:
public static class GenericTypes
{
public static readonly Type StringNode = typeof(Node<string>);
}
XAML:
<Style TargetType="{x:Static local:GenericTypes.StringNode}">
...
<Style>
0 件のコメント:
コメントを投稿