2015-05-03 2 views
1

Я ищу https://github.com/XLabs/Xamarin-Forms-Labs/blob/master/Samples/XLabs.Sample/ViewModel/CameraViewModel.cs, чтобы попытаться получить камеру в моем приложении.Xamarin XLabs IOC и фотоаппарат

У меня есть установки, он же, но когда я запускаю мое приложение приложение IOS, которая вызывает мой PCL дает ошибку:

IResolver has not been set. Please set it by calling Resolver.SetResolver(resolver) method. 

Я не знаю, что это значит, или какой точный код мне нужно , Я вообще не использую IOC, и я не очень волнуюсь об этом, но я просто хочу, чтобы эта камера была доступна для моего PCL. Как я могу получить эту камеру для моего PCL, когда я не использую MVC здесь.

ответ

2

Если вы хотите использовать ViewModel затем изменить конструктор, чтобы принимать в IMediaPicker:

https://github.com/XLabs/Xamarin-Forms-Labs/blob/master/Samples/XLabs.Sample/ViewModel/CameraViewModel.cs#L62

public CameraViewModel(IMediaPicker mediaPicker) 
    { 
     this._mediaPicker = mediaPicker; 
    } 

Удалить из функции настройки:

https://github.com/XLabs/Xamarin-Forms-Labs/blob/master/Samples/XLabs.Sample/ViewModel/CameraViewModel.cs#L156-L167

Как вы получаете Реализация IMediaPicker для PCL зависит от вас. IoC является предпочтительным (и простым) способом, но вы также можете использовать другие шаблоны. Можно было бы определить статическое свойство Func<IMediaPicker> на ViewModel и установить его в конкретных проектах платформы.

IoC контейнер является самым простым и быстрым способом, чтобы сделать это, и было бы просто добавить эти строки при запуске приложения (например, метод FinishedLaunching AppDelegate в):

var container = new SimpleContainer(); 
container.Register<IMediaPicker, MediaPicker>(); 
Resolver.SetResolver(container.GetResolver()); 
+0

Это вопрос, я действительно спрашиваю , Я не знаю, как получить реализацию IMediaPicker с помощью XLabs. Я не придирчив к тому, как я это понимаю. Мне просто нужно знать, как это получить, поскольку я не знаю, как это сделать. – user441521

+0

В примерах XLabs используется DependencyService. Когда вы читаете о DependencyService, в верхней части каждой конкретной реализации платформы добавляется атрибут сборки, чтобы он автоматически регистрировался. http://developer.xamarin.com/guides/cross-platform/xamarin-forms/dependency-service/ Это, похоже, не так с XLabs, хотя, когда вы смотрите на их реализацию, они не делают что. Поэтому я не уверен, как вручную зарегистрировать MediaPicker для IoC. – user441521

+0

Я обновил свой ответ для примера о том, как настроить Resolver с помощью IMediaPicker. Если вы используете Xamarin Forms, вы можете использовать DependencyService для регистрации и разрешения, но это потребует изменений в самой ViewModel. – SKall

Смежные вопросы