2016-06-21 9 views
1

私のプロジェクトでは、リストビューがあり、SelectedItemの変更を聞くのは簡単ですが、すべてのチュートリアルにはありますが、ItemTappedイベントの使用については何も見つかりません。FreshMvvmのItemTappedイベントを聞きます

イベントをmodelPageにバインドするにはどうすればよいですか?

おかげで、

マイク

答えて

1

ItemTappedので、あなたはあなたPageModelから直接それを使用することはできませんイベントではなくCommand(またはまったくBindableProperty)です。

彼らはBehaviorsのようなものを発明しました。行動ではEventCommandにすることができます。

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で動作を提供することができます。

+0

助けていただきありがとうございます。 –

関連する問題