私のプロジェクトでは、リストビューがあり、SelectedItemの変更を聞くのは簡単ですが、すべてのチュートリアルにはありますが、ItemTappedイベントの使用については何も見つかりません。FreshMvvmのItemTappedイベントを聞きます
イベントをmodelPageにバインドするにはどうすればよいですか?
おかげで、
マイク
私のプロジェクトでは、リストビューがあり、SelectedItemの変更を聞くのは簡単ですが、すべてのチュートリアルにはありますが、ItemTappedイベントの使用については何も見つかりません。FreshMvvmのItemTappedイベントを聞きます
イベントをmodelPageにバインドするにはどうすればよいですか?
おかげで、
マイク
ItemTapped
ので、あなたはあなたPageModel
から直接それを使用することはできませんイベントではなくCommand
(またはまったくBindableProperty
)です。
彼らはBehaviors
のようなものを発明しました。行動ではEvent
をCommand
にすることができます。
Corcav's oneのようなサードパーティのプラグインがありますが、Xamarin.Forms nowにも組み込まれています。
私はCorcavで説明しましょう。他の実装も同様です。また、私はあなたがXAMLを使用していると仮定しています。
まず、NuGetをインストールし、何かの追加を意味し、あなたのページに右の名前空間を含めることを忘れないでください:
<!-- ... 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 ... -->
:
xmlns:behaviors="clr-namespace:Corcav.Behaviors;assembly=Corcav.Behaviors"
を今すぐあなたのListView
下にそうようなあなたのBehaviors
を宣言
これはコレクションなので、必要に応じて追加することもできます(他のシナリオでも同様です)。 また、私はがであり、実際にはユーザーはSelectedItem
であったことにも注意してください。これは、タップしたアイテムが選択されたままになるため、おそらくあなたが望むものです。したがって、SelectedItem
プロパティはnull
(それゆえTwoWay)に戻すこと以上のことはしません。しかし、そこから実際に選択された項目を取ることもできます。
だから今、あなたのPageModel
でコマンドを宣言し、このようなもので、それを割り当てます。
private void ItemSelected()
{
// Open the article page.
if (_selectedItem != null)
{
CoreMethods.PushPageModel<GroupArticlePageModel>(_selectedItem, false, true);
}
}
_selectedItem
がタップ項目が割り当てられる性質であること。 もちろん、あなたはそれをさらに良くすることができ、タップされたアイテム参照を置くCommandParameter
で動作を提供することができます。
助けていただきありがとうございます。 –