1

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

modelPage でイベントを何にバインドしますか?

ありがとう、

マイク

4

1 に答える 1

1

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、タップされた項目の参照を配置する を使用して動作を提供することもできます。

于 2016-06-21T07:50:19.090 に答える