Skip to content

TabViewProperty

TabView のバインディングを宣言するときに利用するBindablePropertyです。

宣言の方法

BindablePropertyと同様にTabViewProperty<T>.Create()を呼び出すことで宣言ができます。
<T>TabViewにバインディングしたいViewModelの型を指定します。

csharp
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()は次のパラメータを指定することができます。

パラメータ必須初期値
tabContentViewInfoListIEnumerable<(string viewGuid, PropertyPath labelDataSourcePath)>yes-
elementNameInfoElementNameInfoyes-
  • tabContentViewInfoList
    TabViewPropertyTabを生成します。
    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に対してバインディングを構築するかを指定します。