Xamarin Forms Labs
XLabs is a open source project that aims to provide a powerful and cross platform set of services and controls tailored to work with Xamarin and Xamarin Forms.
Call for action for all Xamarin Developers, embrace this project and share your controls and services with the community, add your own control to the toolkit.
Important for developers The master branch is the current development branch. The v.2.0 is the stable branch.
Find a Bug or Fix a Bug [Issue Tracker] (https://github.com/XLabs/Xamarin-Forms-Labs/issues)
Available controls
- AutoCompleteView (beta)
- BindablePicker (beta)
- Calendar Control (beta)
- Checkbox (beta)
- DynamicListView (beta)
- ExtendedContentView (beta)
- ExtendedEntry (beta)
- ExtendedLabel (beta)
- ExtendedScrollView (beta)
- ExtendedTabbedPage
- ExtendedTextCell (beta)
- ExtendedViewCell (beta)
- HybridWebView (beta)
- GradientContentView (iOS/Android beta)
- GridView (IOS beta)
- ImageButton (beta)
- RadioButton (beta)
- RepeaterView (beta)
- SegmentedControlView (IOS beta)
- Web Image (beta)
- IconButton (IOS beta)
- CircleImage (IOS/Android alpha)
- HyperLinkLabel
Available services
- Accelerometer
- Cache
- Camera (Picture and Video picker, Take Picture, Take Video)
- Device (battery info, device info, sensors, accelerometers)
- Display
- Geolocator
- Phone Service (cellular network info, make phonecalls)
- SoundService
- Text To Speech
- Secure Storage
- Settings
Available Mvvm helpers (Beta)
- ViewModel (navigation, isbusy)
- ViewFactory
- IOC
- IXFormsApp (application events)
Available Plugins
- Serialization (ServiceStackV3, ProtoBuf, JSON.Net)
- Caching (SQLLiteSimpleCache)
- Dependency Injection containers (TinyIOC, Autofac, NInject, SimpleInjector, Unity)
- Web (RestClient)
- Charting (Line, Bar & Pie) (Alpha)
HOW-TO
We are working in a great wiki on how to use the controls and services.
https://github.com/XLabs/Xamarin-Forms-Labs/wiki
Good forum post helping you setup and use XLabs
Using the MVVM Helpers
ViewFactory Coming soon
Using the controls
Add XLabs.Forms reference to your projects , main pcl, ios, android, and wp.
Xaml :
Reference the assembly namespace
xmlns:controls="clr-namespace:XLabs.Forms.Controls;assembly=XLabs.Forms"
Render your control:
<controls:ImageButton Text="Twitter" BackgroundColor="#01abdf" TextColor="#ffffff" HeightRequest="75" WidthRequest="175" Image="icon_twitter" Orientation="ImageToLeft" ImageHeightRequest="50" ImageWidthRequest="50" />
Or from your codebehind:
var button = new ImageButton() {
ImageHeightRequest = 50,
ImageWidthRequest = 50,
Orientation = Orientation.ImageToLeft,
Source = "icon_twitter.png",
Text = "Twitter"
};
stacker.Children.Add (button);
Using the Services
TextToSpeechService
Resolver.Resolve<ITextToSpeechService>().Speak(TextToSpeak);
Device
var device = Resolver.Resolve<IDevice>();
device.Display; //display information
device.Battery; //battery information
PhoneService
var device = Resolver.Resolve<IDevice>();
// not all devices have phone service, f.e. iPod and Android tablets
// so we need to check if phone service is available
if (device.PhoneService != null)
{
device.PhoneService.DialNumber("+1 (855) 926-2746");
}
Initializing the Services
Do this before using the services
Step 1:
-
iOS => Make sure your AppDelegate inherits from XFormsApplicationDelegate
-
Android => MainActivity inherits from XFormsApplicationDroid
-
Windows Phone => Add this line to your App.cs var app = new XFormsAppWP(); app.Init(this);
Step 2: Initialize the container in your app startup code.
var container = new SimpleContainer ();
container.Register<IDevice> (t => AppleDevice.CurrentDevice);
container.Register<IDisplay> (t => t.Resolve<IDevice> ().Display);
container.Register<INetwork>(t=> t.Resolve<IDevice>().Network);
Resolver.SetResolver (container.GetResolver ());
For more info on initialization go to the Labs Wiki
Helper
Based in last developments (master)
Master- XLabs Framework Helper for online use
Master - Xamarin.Forms.Labs.chm file for offline use
Build the project
To develop on this project, just clone the project to your computer, package restore is enable so build the solution first, if you get any errors try to build each project independently .
Nuget
Main Packages:
- XLabs.Platform
- [XLabs.Forms] (http://www.nuget.org/packages/XLabs.Forms/)
Plugins:
- To be updated...
Contributions:
- Shawn Anderson @ravensorb
- Jim Bennett @jimbobbennett
- Filip De Vos @foxtricks
- Kevin E. Ford @Bowman74
- Eric Grover @bluechiperic
- Ben Ishiyama-Levy @mrbrl
- Sami M. Kallio
- Bart Kardol
- Petr Klíma
- Thomas Lebrun @thomas_lebrun
- Rui Marinho @ruiespinho
- Mitch Milam @mitchmilam
- Oren Novotny @onovotny
- Michael Ridland @rid00z
- Chris Riesgo @chrisriesgo
- Nicholas Rogoff @nrogoff
- Sara Silva @saramgsilva
- Jason Smith @jassmith87
- Ryan Wischkaemper
- Kazuki Yasufuku
Other Project Contributions:
- Xamarin.Mobile
Contribute
Everbody is welcome to contribute with any kind of controls or features at this time.
Twitter hashtag : #xflabs
CHAT
XLabs Chat room online on Jabbr
License
License Apache 2.0 more about that in the LICENSE file.