記事のカテゴリー: 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 件のコメント:
コメントを投稿