MAUI:XAML側でViewModelのインテリセンスを効かせる
XAML側でデータバインディング時にViewModelのパブリックメンバーがインテリセンスで表示されたり、タイポで存在しないメンバーを指定したときに指摘してくれると嬉しいです。
Xamain.Formsのときは以下のようにデザイン時支援機能を使って以下のように書くことでインテリセンスを有効にしました。
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を使うときにはまずはやっておきたいことの一つです。