👻
XAMLでプロパティのプロパティをバインドする
きっかけ
複数ViewModelが共通して持つSharedViewModelがあるとき、ViewにSharedViewModelのプロパティを簡単にバインドできて便利だったのでメモとして残します。
TL;DR
ItemsSource="{Binding Shared.Items}"
みたいに書ける。
環境
C#
.NET 8.0
.NET MAUI
CommunityToolkit.Mvvm
ソースコード
ViewModel.cs
public partial class ViewModel : ObservableObject
{
public ViewModel(SharedViewModel sharedViewModel)
{
Shared = sharedViewModel;
}
public SharedViewModel Shared { get; }
[ObservableProperty]
public Item selectedItem
}
SharedViewModel.cs
public partial class SharedViewModel : ObservableObject
{
[ObservableProperty]
private List<Item> items = [];
}
View(抜粋).xaml
<CollectionView ItemsSource="{Binding Shared.Items}"
SelectedItem="{Binding SelectedItem}"
</CollectionView>
こうするともっと良いよというのがあればぜひ教えて下さい!
Discussion