Skip to content
This repository has been archived by the owner on Aug 27, 2020. It is now read-only.
Mark Smith edited this page Jun 4, 2018 · 17 revisions

Initializing the library

You call the static XamUInfrastructure.Init method to do the common initialization tasks. This should only be called once. It registers each of the built-in implementations with the defined abstractions:

  • FormsNavigationPageService => INavigationService
  • FormsMessageVisualizerService => IMessageVisualizerService
  • DependencyServiceWrapper => IDependencyService

You can also replace the IDependencyService default by passing in a different implementation to the XamUInfrastructure.Init method. This method always returns the decided IDependencyService which you can cache off and use in your app, or retrieve from anywhere in your code through the static XamUInfrastructure.ServiceLocator property.

If you want to replace the other services, then just add them to the returned dependency service and they will replace the original registrations.

See XamUInfrastructure for more details.

Available Types

This is a list of the reusable classes included in the library. Most are independent and have not required dependencies on each other so you can pick and choose what you utilize in your code. For example you can choose to use the message visualizer service but not the navigation service.

XamUInfrastructure - static class to initialize and retrieve the service locator.

Commands

Data Binding

Behaviors

Controls

  • ItemsControl - a simple bindable template creator which will instantiate a set of Label elements or DataTemplate driven elements from a bound list. Similar to a ListView, but the produced content is not scrollable, nor does it provide any interactivity outside the generate content.

Value Converters

Collections

Extension methods

Interfaces

  • IAsyncDelegateCommand - an interface to expose ExecuteAsync. Derives from IDelegateCommand.
  • IDelegateCommand - an interface to expose RaiseCanExecuteChanged. This derives from ICommand.
  • IDependencyService - an abstraction over a typical Service Locator such as Xamarin.Forms DependencyService.
  • IMessageVisualizerService - an abstraction over a "MessageBox" display such as Xamarin.Forms Page.DisplayAlert.
  • INavigationService - an abstraction for a basic navigation service using string-based keys to represent the pages you can navigate to.
  • IViewModelNavigationInit - an interface to provide async initialization to view models, and to pass parameters in as part of navigation.

Markup Extensions

MVVM classes

  • AsyncDelegateCommand - an implementation of IAsyncDelegateCommand.
  • DelegateCommand - an implementation of IDelegateCommand. Useful to avoid dependencies in your ViewModels on Xamarin.Forms.
  • PropertyObserver - a fluid property observer which lets you easily monitor PropertyChange notifications on child ViewModels.
  • SimpleViewModel - a base ViewModel implementation for MVVM which supports property change notifications.

You can create and pass parameters to View Models in several ways.

Services

  • DependencyServiceWrapper - a wrapper around Xamarin.Forms static DependencyService class to turn it into a service based on IDependencyService.
  • FormsMessageVisualizerService - a wrapper around Xamarin.Forms Page.DisplayAlert method to turn it into a service based on IMessageVisualizerService.
  • FormsNavigationPageService - an example service which implements the included INavigationService and supports basic stack-based navigation through Xamarin.Forms.
Clone this wiki locally