shuhelohelo’s blog

Xamarin.Forms多めです.

MAUI:XAML側でViewModelのインテリセンスを効かせる

XAML側でデータバインディング時にViewModelのパブリックメンバーがインテリセンスで表示されたり、タイポで存在しないメンバーを指定したときに指摘してくれると嬉しいです。

Xamain.Formsのときは以下のようにデザイン時支援機能を使って以下のように書くことでインテリセンスを有効にしました。

shuhelohelo.hatenablog.com

MAUIではデザイン時支援機能ではなくx:DataTypeを使います。 以下のようにContentPageにViewModelへの参照を追加しておくことで、ContentPage以下で指定したクラスのメンバーがインテリセンスに表示されます。

<ContentPage
    x:Class="MyMauiAppPractice.MainPage"
    xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
    xmlns:viewmodel="clr-namespace:MyMauiAppPractice.ViewModel"
    x:DataType="viewmodel:SamplesViewModel">

例えば以下のようなSampleViewModelというクラスがあったとします。

public partial class SamplesViewModel : BaseViewModel
{
    public string SampleText { get; set; }

    public ObservableCollection<Sample> Samples { get; set; }
}

このViewModelを使うView側で上記のようにx:DataTypeを使ってSampleViewModelクラスを指定しておくと、XAML側でデータバインディングの記述時にインテリセンスが効きます。

x:DataTypeでクラスを指定していないときはこのように候補が表示されません。

タイポのときは、XAML上でそれを指摘してくれます。

私にとってはMAUIを使うときにはまずはやっておきたいことの一つです。