私のプロジェクトにはリストビューがあり、SelectedItem の変更をリッスンするのは簡単です。すべてのチュートリアルにそれがありますが、ItemTapped イベントの使用に関するものは何も見つかりません。
modelPage でイベントを何にバインドしますか?
ありがとう、
マイク
私のプロジェクトにはリストビューがあり、SelectedItem の変更をリッスンするのは簡単です。すべてのチュートリアルにそれがありますが、ItemTapped イベントの使用に関するものは何も見つかりません。
modelPage でイベントを何にバインドしますか?
ありがとう、
マイク
ItemTapped
はイベントであり、Command
(またはBindableProperty
まったく) ではないため、あなたから直接使用することはできませんPageModel
。
彼らはこのようなものを発明しBehaviors
ました。動作を使用すると、Event
を に変えることができますCommand
。
Corcav のプラグインのようにこれを行うサード パーティのプラグインがありますが、 Xamarin.Formsにも組み込まれています。
Corcav のもので説明しましょう。他の実装も同様であるはずです。また、XAML を使用していると仮定しています。
まず、NuGet をインストールし、適切な名前空間をページに含めることを忘れないでください。つまり、次のようなものを追加します。xmlns:behaviors="clr-namespace:Corcav.Behaviors;assembly=Corcav.Behaviors"
今あなたのListView
宣言の下であなたのBehaviors
ように:
<!-- ... more XAML here ... -->
<ListView IsPullToRefreshEnabled="true" RefreshCommand="{Binding RefreshDataCommand}" IsRefreshing="{Binding IsBusy}" IsVisible="{Binding HasItems}" ItemsSource="{Binding Items}" SelectedItem="{Binding SelectedItem, Mode=TwoWay}" CachingStrategy="RecycleElement">
<behaviors:Interaction.Behaviors>
<behaviors:BehaviorCollection>
<behaviors:EventToCommand EventName="ItemSelected" Command="{Binding ItemSelectedCommand}" />
</behaviors:BehaviorCollection>
</behaviors:Interaction.Behaviors>
<!-- ... more XAML here ... -->
これはコレクションであるため、必要に応じてさらに追加できます (他のシナリオでも)。また、実際にユーザーも同様に使用したことに注意してください。SelectedItem
そうしないと、タップしたアイテムが選択されたままになるため、これはおそらくあなたが望むものです。そのため、SelectedItem
プロパティはそれを元に戻す以上のことはしませんnull
(したがって、TwoWay です)。ただし、そこから実際に選択したアイテムを取得することもできます。
したがってPageModel
、コマンドを宣言して、次のように割り当てます。
private void ItemSelected()
{
// Open the article page.
if (_selectedItem != null)
{
CoreMethods.PushPageModel<GroupArticlePageModel>(_selectedItem, false, true);
}
}
_selectedItem
タップされたアイテムが割り当てられるプロパティです。もちろんCommandParameter
、タップされた項目の参照を配置する を使用して動作を提供することもできます。