ListViewProperty
ListView
のバインディングを宣言するときに利用するBindableProperty
です。
宣言の方法
BindableProperty
と同様にListViewProperty<T>.Create()
を呼び出すことで宣言ができます。
csharp
private static readonly ListViewProperty<AlarmInfoViewModel> ListDataSourceProperty =
ListViewProperty<AlarmInfoViewModel>.Create(
itemViewId: AlarmInfoLayout.UxmlGuid,
makeItemSource: MakeItem,
itemsSourcePath: PropertyPath.FromName(nameof(AlarmInfoListViewModel.Current)),
elementNameInfo: ElementNames.AlarmsList
);
private static AlarmInfoViewModel MakeItem(int index)
{
var newInfo = new AlarmInfo
{
isEnabled = true,
id = Guid.NewGuid().ToString(),
info = $"Alarm {index + 1}",
timeStringIso8601 = DateTime.Now.ToString("yyyy-MM-dd'T'HH:mm:sszzz"),
};
return new AlarmInfoViewModel(newInfo);
}
Parameters
TabViewProperty<T>.Create()
は次のパラメータを指定することができます。
パラメータ | 型 | 必須 | 初期値 |
---|---|---|---|
itemViewId | string | yes | - |
makeItemSource | MakeItemSourceDelegate | yes | - |
itemsSourcePath | PropertyPath | yes | - |
elementNameInfo | ElementNameInfo | yes | - |
bindingMode | BindingMode | no | BindingMode.ToTarget |
updateTrigger | BindingUpdateTrigger | no | BindingUpdateTrigger.OnSourceChanged |
itemViewId
ViewクラスのGuidを指定します。指定するGuidのViewクラスを含むアセンブリについて、事前にViewInstaller.Install()
をしておく必要があります。ListView.makeItem
でこのGuidを元にVisualTreeAsset
を取得、インスタンス化し、Viewクラスによってデータバインディングが実行されます。makeItemSource
ListView.bindItem
が発火する際に、どのようにitemsSource
の中身を作成するかを定義することができます。makeItemSource
で指定した処理の結果がListView
内の要素1つ当たりのデータソースとなります。elementNameInfo どの
ListView
に対してバインディングを構築するかを指定します。bindingMode
BindingMode
を指定します。updateTrigger
BindingUpdateTrigger
を指定します。