Skip to content

SubViewModelProvidableViewBase<T1,T2>

SubViewModelProvidableViewBaseは、データソースの設定時に親となるViewにバインディングされたViewModelと異なるViewModelをバインディングすることができるViewクラスです。
T1には親となるViewModelが、T2には子となるViewModelの型をそれぞれ設定します。
次のようにViewクラスを定義することができます。

csharp

    [HaikaraUI]
    public partial class ControlsShowcaseLayout : 
        SubViewModelProvidableViewBase<ShowcaseViewModel, ControlsShowcaseViewModel>
    {
        protected override ControlsShowcaseViewModel ProvideSubViewModel(ShowcaseViewModel parentViewModel)
        {
            return parentViewModel.Controls;
        }
    }

Use case

Haikaraでは、Viewクラスに設定したViewModelが子へと伝播していきます。
一方で、.uxmlに紐づけたいViewModelと、その.uxml内のテンプレートとで異なるViewModelを設定したいケースも存在します。
その場合は、SubViewModelProvidableViewBaseが非常に有効です。
このクラスを継承したViewクラスのバインディングが実施される前に、ProvideSubViewModel() が呼び出され、定義した処理からViewModelを指定することができるようになります。