Как выбранный элемент MVVM listview - форма Xamarin - PullRequest
1 голос
/ 21 апреля 2020

как выбрать элемент в списке просмотра Mvvm мой код не работал

мой код Itemsource:

protected async override void OnAppearing()
    {
        base.OnAppearing();
        var allPersons = await firebaseHelper.GetAllCamps();
        lstCampus.ItemsSource = allPersons;
    }

мой код selectedItem:

void OnItemTapped(object sender, System.EventArgs e)
    {
        if (lstCampus.SelectedItem != null)
            DisplayAlert("OnItemTapped", lstCampus.SelectedItem.ToString(), "OK");
    }

моя модель :

public class Campus
{
    public string NameCamp { get; set; }
}

Модель моего взгляда:

public async Task<List<Campus>> GetAllCamps()
    {

        return (await firebase
          .Child("Camps")
          .OnceAsync<Campus>()).Select(item => new Campus
          {
              NameCamp = item.Object.NameCamp
          }).ToList();
    }

Спасибо

Ответы [ 2 ]

1 голос
/ 21 апреля 2020

Вы можете попробовать использовать поведение. Это поможет вам:

https://www.c-sharpcorner.com/article/xamarin-forms-eventtocommand-behavior-in-mvvm-viewmodel/

https://docs.microsoft.com/en-US/xamarin/xamarin-forms/app-fundamentals/behaviors/reusable/event-to-command-behavior

После этого просто добавьте что-то подобное в свой список:

                <ListView.Behaviors>
                    <b:EventToCommandBehavior EventName="ItemTapped" Command="{Binding TappedCamp}" InputConverter="{StaticResource ItemTappedConverter}"/>
                </ListView.Behaviors>
0 голосов
/ 21 апреля 2020

Используйте List.ItemTapped или ListView.ItemSelected , они оба возникают при выборе элемента.

ItemTapped

listview.ItemTapped += Listview_ItemTapped;
private void Listview_ItemTapped(object sender, ItemTappedEventArgs e)
    {
        DisplayAlert("OnItemTapped", (e.Item as Campus).NameCamp , "OK");
    }

ItemSelected

listview.ItemSelected += Listview_ItemSelected;

private void Listview_ItemSelected(object sender, SelectedItemChangedEventArgs e)
    {
        DisplayAlert("OnItemTapped", (e.SelectedItem as Campus).NameCamp, "OK");
    }
...