TabViewProperty
TabView のバインディングを宣言するときに利用するBindablePropertyです。
宣言の方法
BindablePropertyと同様にTabViewProperty<T>.Create()を呼び出すことで宣言ができます。<T>はTabViewにバインディングしたいViewModelの型を指定します。
private static readonly TabViewProperty<ShowcaseViewModel> TabProperty =
TabViewProperty<ShowcaseViewModel>.Create(
tabContentViewInfoList: new[]
{
(
viewGuid: ControlsShowcaseLayout.UxmlGuid,
labelDataSourcePath: PropertyPath.Combine(
PropertyPath.FromName(nameof(ShowcaseViewModel.Controls)),
PropertyPath.FromName(nameof(ControlsShowcaseViewModel.TabLabel))
)
),
(
viewGuid: ListViewShowcaseLayout.UxmlGuid,
labelDataSourcePath: PropertyPath.Combine(
PropertyPath.FromName(nameof(ShowcaseViewModel.ListView)),
PropertyPath.FromName(nameof(ListViewShowcaseViewModel.TabLabel))
)
)
},
elementNameInfo: ElementNames.RootTab
);Parameters
TabViewProperty<T>.Create()は次のパラメータを指定することができます。
| パラメータ | 型 | 必須 | 初期値 |
|---|---|---|---|
| tabContentViewInfoList | IEnumerable<(string viewGuid, PropertyPath labelDataSourcePath)> | yes | - |
| elementNameInfo | ElementNameInfo | yes | - |
tabContentViewInfoList
TabViewPropertyはTabを生成します。tabContentViewInfoListでは、生成されたTabと紐づけるViewクラスの一覧を指定することができます。TabViewにバインディングされるViewModelは<T>で指定した型を持ちます。tabContentViewInfoListで指定したViewに異なるViewModelをバインディングしたい場合は、tabContentViewInfoListで指定するViewクラスにHaikaraViewModelProvidableBaseを継承させる必要があります。viewGuid
ViewクラスのGuidを指定します。指定するGuidのViewクラスを含むアセンブリについて、事前にViewInstaller.Install()をしておく必要があります。
このGuidを元にTabの中身となるVisualTreeAssetを取得、インスタンス化し、Viewクラスによってデータバインディングが実施されます。labelDataSourcePath
TabView上のラベルのデータソースを指定することができます。
elementNameInfo
どのTabViewに対してバインディングを構築するかを指定します。