Я использую VS 17 для форм Xamarin.Я настроил Prism в своем приложении Xamarin.Forms и просто добавил ссылку на мой интерфейс Api (в конструкторе ViewModel), и он заставляет приложение прекратить переход на вторую страницу.Я должен сделать это для передачи параметров и т. Д. Я следовал этому руководству:
https://blog.qmatteoq.com/prism-for-xamarin-forms-basic-navigation-and-dependency-injection-part-2/
Это то, что я сделал, чтобы навигация перестала работать:
private readonly IService _Service;
private ObservableCollection<TodoItem> _topSeries;
public ObservableCollection<TodoItem> TopSeries
{
get { return _topSeries; }
set { SetProperty(ref _topSeries, value); }
}
Это конструктор:
public SecondPageViewModel(IService Service, INavigationService navigationService)
{
_Service = Service;
_navigationService = navigationService;
}
Так что я даже не могу добраться до вышеприведенной модели представления из-за кода, который я добавил.Я пытался поставить точки останова на DelegateCommand (на первой ViewModel), но он просто останавливается после InitializeComponent ();и тогда ничего не происходит.Нет сообщений об ошибках!Спасибо!
Обновление:
Мой класс обслуживания, который извлекает данные:
public class Service : IService
{
public List<TodoItem> TodoList { get; private set; }
HttpClient client;
Service()
{
client = new HttpClient();
client.MaxResponseContentBufferSize = 256000;
}
public async Task<List<TodoItem>> DataAsync()
{
TodoList = new List<TodoItem>();
var uri = new Uri(string.Format(Constants.RestUrl, string.Empty));
try
{
var response = await client.GetAsync(uri);
if (response.IsSuccessStatusCode)
{
var content = await response.Content.ReadAsStringAsync();
TodoList = JsonConvert.DeserializeObject<List<TodoItem>>(content);
Debug.WriteLine(content);
}
}
catch (Exception ex)
{
Debug.WriteLine(@"ERROR {0}", ex.Message);
}
return TodoList;
}
}
Это мой App.Xaml.cs
protected override void RegisterTypes(IContainerRegistry containerRegistry)
{
containerRegistry.RegisterForNavigation<NavigationPage>();
containerRegistry.RegisterForNavigation<View.MainPage, MainPageViewModel>();
containerRegistry.RegisterForNavigation<View.SecondPage, SecondPageViewModel>();
containerRegistry.Register<IService, Service>();
}
МойИнтерфейс:
public interface IService
{
Task<List<TodoItem>> DataAsync();
}
Вот как я перемещаюсь (щелкните из списка):
private EventItem _selectedEvent { get; set; }
public EventItem SelectedEvent
{
get { return _selectedEvent; }
set
{
if (_selectedEvent != value)
{
if (Device.RuntimePlatform == Device.iOS)
{
_selectedEvent = null;
}
else
{
_selectedEvent = value;
}
NavigationParameters navParams = new NavigationParameters();
navParams.Add("PassedValue", _todoItem.name);
_navigationService.NavigateAsync("SecondPage", navParams);
}
}
}
Редактировать:
Когда я отлаживаю без кода ApiService, команда принимаетменя к новому новому конструктору в новой viewmodel.С кодом он не доходит до конструктора.