Может кто-нибудь сказать мне, что я делаю не так?Мое приложение имеет два listView.Первый локальный и работает отлично.Я нажимаю на элемент списка, и открывается страница с подробностями.
Второй список показывает элементы, которые я прочитал из моего REST Api.Дата прочитана правильно, в первый раз список отображает элементы правильно, и когда я нажимаю на один из элементов, открывается страница с подробной информацией.Проблема возникает, когда я снова пытаюсь щелкнуть элемент.Страница с подробностями не работает, и я не могу вернуться из списка.
Я искал решения, но не мог сопоставить их с моим проектом.Может ли кто-нибудь сказать мне, что я делаю неправильно?
Мой код:
Модель: UnivElement.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.Web;
namespace PrismBlankXF.Models
{
//[DataContract]
public class UnivElement
{
//[DataMember(Name = "C0")]
public string C0 { get; set; }
//[DataMember(Name = "C1")]
public string C1 { get; set; }
//[DataMember(Name = "C2")]
public string C2 { get; set; }
//[DataMember(Name = "C3")]
public string C3 { get; set; }
//[DataMember(Name = "C4")]
public string C4 { get; set; }
//[DataMember(Name = "C5")]
public string C5 { get; set; }
//[DataMember(Name = "Color")]
public string Color { get; set; }
}
}
Просмотров: ZasobyListContentPage.xaml.cs
using System.Collections;
using System.Collections.Generic;
using System.Net.Http;
using System.Threading.Tasks;
using PrismBlankXF.Date;
using PrismBlankXF.Date.Rest;
using PrismBlankXF.Models;
using PrismBlankXF.ViewModels;
using Xamarin.Forms;
namespace PrismBlankXF.Views
{
public partial class ZasobyListContentPage : ContentPage
{
private readonly MyRestDataService _myrestDataService = new MyRestDataService();
public ZasobyListContentPage()
{
InitializeComponent();
Title = "Zdalne REST Api ";
}
protected async override void OnAppearing()
{
base.OnAppearing();
List<UnivElement> listitems = await _myrestDataService.GetAllWithParam(AppState.CurrentCode, AppState.User);
lstView.ItemsSource = listitems;
}
}
}
ZasobyListContentPage.xaml
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:prism="clr-namespace:Prism.Mvvm;assembly=Prism.Forms"
xmlns:behaviors="clr-namespace:Prism.Behaviors;assembly=Prism.Forms"
xmlns:converters="clr-namespace:PrismBlankXF.Converters;assembly=PrismBlankXF"
prism:ViewModelLocator.AutowireViewModel="True"
x:Class="PrismBlankXF.Views.ZasobyListContentPage"
Title="{Binding Title}"
BackgroundColor="WhiteSmoke">
<StackLayout>
<StackLayout>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="160"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Label
Grid.Row="0"
Grid.Column="0"
Text="LISTA REST API"
TextColor="CadetBlue"
FontAttributes="Bold"
FontSize="Small"/>
<Label
Grid.Row="1"
Grid.Column="0"
Text="Zalogowany użytkownik:"
TextColor="DarkSlateGray"
FontSize="Small"
FontAttributes="Bold"/>
<Label
Grid.Row="1"
Grid.Column="1"
Text="{Binding UserCode}"
FontSize="Small"
FontAttributes="None"/>
<Label
Grid.Row="2"
Grid.Column="0"
Text="Lokalizacja:"
TextColor="DarkSlateGray"
FontSize="Small"
FontAttributes="Bold"/>
<Label
Grid.Row="2"
Grid.Column="1"
Text="{Binding LokalizCode}"
FontSize="Small"
FontAttributes="None"/>
</Grid>
</StackLayout>
<StackLayout>
<ListView
x:Name="lstView"
HasUnevenRows="True"
ItemsSource="{Binding MyDatas}">
<ListView.Behaviors>
<behaviors:EventToCommandBehavior
EventName="ItemTapped"
Command="{Binding ItemTappedCommand}"
EventArgsConverter="{converters:ItemTappedEventArgsConverter}" />
</ListView.Behaviors>
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="75"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Image Grid.Column="0" WidthRequest="75" Source ="emotikon1.png" Aspect="AspectFit" />
<StackLayout Grid.Column="1">
<Label Text="{Binding C0}" FontSize="Small" FontAttributes="Bold"/>
<Label Text="{Binding C1}" FontSize="Micro"/>
<Label Text="{Binding C2}" FontSize="Micro"/>
</StackLayout>
</Grid>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackLayout>
</StackLayout>
</ContentPage>
ZasobyListDetailsContentPage.xaml.cs
using Xamarin.Forms;
namespace PrismBlankXF.Views
{
public partial class ZasobDetailsContentPage : ContentPage
{
public ZasobDetailsContentPage(Models.UnivElement selectedItem)
{
InitializeComponent();
}
}
}
ZasobyListDetailsContentPage.xaml
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:prism="clr-namespace:Prism.Mvvm;assembly=Prism.Forms"
prism:ViewModelLocator.AutowireViewModel="True"
x:Class="PrismBlankXF.Views.ZasobDetailsContentPage"
Title="{Binding Title}"
BackgroundColor="WhiteSmoke">
<StackLayout>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Label Grid.Row="0" Grid.Column="0"
Text="{Binding UnivElemDetails.C0}"/>
<Label Grid.Row="1" Grid.Column="0"
Text="{Binding UnivElemDetails.C1}"/>
<Label Grid.Row="2" Grid.Column="0"
Text="{Binding UnivElemDetails.C2}"/>
<Label Grid.Row="3" Grid.Column="0"
Text="{Binding UnivElemDetails.C3}"/>
<Label Grid.Row="4" Grid.Column="0"
Text="{Binding UnivElemDetails.C4}"/>
<Label Grid.Row="5" Grid.Column="0"
Text="{Binding UnivElemDetails.C5}"/>
</Grid>
</StackLayout>
</ContentPage>
Арктические преобразователи1024 *
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Text;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;
namespace PrismBlankXF.Converters
{
public class ItemTappedEventArgsConverter : IValueConverter, IMarkupExtension
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var itemTappedEventArgs = value as ItemTappedEventArgs;
if (itemTappedEventArgs == null)
{
throw new ArgumentException("Expected value to be of type ItemTappedEventArgs", nameof(value));
}
return itemTappedEventArgs.Item;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
public object ProvideValue(IServiceProvider serviceProvider)
{
return this;
}
}
}
ViewModels:
ZasobyListContantPageViewModel.cs
Метод await _myrestDataService.GetAllWithParam (AppState.CurrentCode, AppState.User) возвращает правильно список 10.
1033 * ZasobyDetailsContantPageViewModel.cs
using Prism.Commands;
using Prism.Mvvm;
using System;
using System.Collections.Generic;
using System.Linq;
using Prism.Navigation;
using PrismBlankXF.Models;
namespace PrismBlankXF.ViewModels
{
public class ZasobDetailsContentPageViewModel : BindableBase, INavigatedAware
{
public ZasobDetailsContentPageViewModel()
{
}
private string _title;
public string Title
{
get { return _title; }
set { SetProperty(ref _title, value); }
}
private UnivElement _univelemdetails;
public UnivElement UnivElemDetails
{
get { return _univelemdetails; }
set { SetProperty(ref _univelemdetails, value); }
}
public void OnNavigatedFrom(NavigationParameters parameters)
{
throw new NotImplementedException();
}
public void OnNavigatedTo(NavigationParameters parameters)
{
if (parameters.ContainsKey("myItem"))
{
UnivElemDetails = (UnivElement)parameters["myItem"];
}
if (parameters.ContainsKey("title"))
{
Title = (string)parameters["title"];
}
}
}
}
Спасибо за помощь :-)