Как отобразить сведения об объекте по ссылке через TapGestureRecognizer в ListView в Xamarin Forms MVVM - PullRequest
0 голосов
/ 13 февраля 2019

У меня есть ListView, отображающий несколько случаев, и я хотел бы отобразить детали его страницы, когда я нажимаю ссылку в списке.Я получаю только пустую страницу.

Я пробовал EventHandler из моего XAML и не работал.

  <ListView ItemsSource="{Binding GetCases}" HasUnevenRows="True">
                <ListView.ItemTemplate>
                    <DataTemplate>
                        <ViewCell>
                            <ViewCell.View>
                                <StackLayout Margin="20,0,20,0">
                                    <Label Text="Case Reference:" FontSize="14" TextColor="Green"/>
                                    <Label FontSize="12" TextColor="Blue" FontAttributes="Bold">
                                        <Label.FormattedText>
                                            <FormattedString>
                                                <Span Text="{Binding Reference}" TextColor="Blue" TextDecorations="Underline">   // I can get the list of References here, but can go to their details
                                                    <Span.GestureRecognizers>
                                                        <TapGestureRecognizer Tapped="TapGestureRecognizer_OnTapped"  NumberOfTapsRequired="1" />
                                                        <TapGestureRecognizer Command="{Binding Path=BindingContext.GoToPageDetails, Source={x:Reference Page}}" />    //This approach takes me to the Page Details, but it is blank
                                                    </Span.GestureRecognizers>
                                                </Span>
                                            </FormattedString>
                                        </Label.FormattedText>
                                    </Label>
                                </StackLayout>
                            </ViewCell.View>
                        </ViewCell>
                    </DataTemplate>
                </ListView.ItemTemplate>
            </ListView>

VIEWMODEL

 public CasesViewModel(INavigation navigation)
    {
        IGetDataFromServer cases = new GetDataFromServer();
        Navigation = navigation;
        GoToPageDetails = new Command(async () => await PageDetails());
        GetCases = cases.GetCases();     // This code retrieves my data from server - it Works fine       
    }

public Command GoToPageDetails {get;задавать;}

    public async Task PageDetails()
    {
        await Navigation.PushAsync(new CaseDetails());
    }

ДЕТАЛИ ДЕЛА XAML

<ListView ItemsSource="{Binding GetCases}" HasUnevenRows="True">
                <ListView.ItemTemplate>
                    <DataTemplate>
                        <ViewCell>
                            <ViewCell.View>
                                <StackLayout Margin="20,0,20,0">
                                    <Label Text="PERSONAL DETAILS" FontSize="Large" TextColor="Black" Margin="0,0,0,20" />
                                    <Label Text="Status:" FontSize="14" TextColor="Green"/>
                                    <Label Text="{Binding status}" 
                                FontSize="12" TextColor="Black" />
                            </StackLayout>
                          </ViewCell.View>
                      </ViewCell>
                  </ DataTemplate>
               </ ListView.ItemTemplate>
 </ ListView>

ДЕТАЛИ ДЕЛА VIEWMODEL

 public CaseDetailsViewModel(INavigation navigation)
    {
        IGetDataFromServer cases = new GetDataFromServer();
        Navigation = navigation;
        GetCases = cases.GetCases().FirstOrDefault();
    }
    public CasesFull GetCases { get; set; }

Я могу перейти на страницу сведений о деле, но она пуста.Возможно, я не передаю ссылку на страницу, или, может быть, это что-то еще.
Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 14 февраля 2019

Я наконец решил проблему.Проблема заключалась в моей модели представления сведений о случае, поскольку мне пришлось добавить модель во все свойства модели представления сведений о случаях (см. Ниже).

<ListView ItemsSource="{Binding GetCases}" HasUnevenRows="True">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <ViewCell>
                        <ViewCell.View>
                            <StackLayout Margin="20,0,20,0">
                                <Label Text="PERSONAL DETAILS" FontSize="Large" TextColor="Black" Margin="0,0,0,20" />
                                <Label Text="Status:" FontSize="14" TextColor="Green"/>
                                <Label Text="{Binding Case.status}" 
                            FontSize="12" TextColor="Black" />
                        </StackLayout>
                      </ViewCell.View>
                  </ViewCell>
              </ DataTemplate>
           </ ListView.ItemTemplate>

Где случай - это мойМодель.Если кто-то хочет отобразить детали объекта, этот код может стать вашим решением.Спасибо Umar3x за помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...