UPDATE - This library has now moved to the Shiny Framework at https://github.com/shinyorg/shiny
A cross platform settings plugin for Xamarin and Windows. Unlike other setting libraries in the wild, this library provides several unique features
- You can store/retrieve just about any type of object (thanks to Newtonsoft.Json)
- You can monitor for changes using the Changed event
- iCloud Settings Provider
- You can use roaming profiles which is useful for:
- iOS app groups
- iOS extensions
- iWatch
- Android Wear
var int1 = CrossSettings.Current.Get<int>("Key");
var int2 = CrossSettings.Current.Get<int?>("Key");
CrossSettings.Current.Set("Key", AnyObject); // converts to JSON
var obj = CrossSettings.Current.Get<AnyObject>("Key");
var myInpcObj = CrossSettings.Current.Bind<MyInpcObject>(); // Your object must implement INotifyPropertyChanged
myInpcObj.SomeProperty = "Hi"; // everything is automatically synchronized to settings right here
//From your viewmodel
CrossSettings.Current.Bind(this);
// make sure to unbind when your model is done
CrossSettings.Current.UnBind(obj);
CrossSettings.Current = new YourImplementationInheritingISettings();
CrossSettings.Current.Changed += (sender, args) => {
Console.WriteLine(args.Action);
Console.WriteLine(args.Key);
Console.WriteLine(args.Value);
};
Autofac
containerBuilder.Register(x => CrossSettings.Current).As<ISettings>().SingleInstance();
OR for strongly typed
containerBuilder.Register(_ => CrossSettings.Current.Bind<YouAppSettings>()).AsSelf().SingleInstance();