/// <summary> /// Bind the text of a text view to a property using a value converter. /// </summary> /// <param name="bindings">The binding manager.</param> /// <param name="control">The text field.</param> /// <param name="output">A function that gets the property.</param> /// <param name="input">A function that sets the property.</param> /// <param name="converter">A custom value converter to string.</param> /// <typeparam name="TData">The type of the property.</typeparam> public static void BindText <TData>(this BindingManager bindings, TextView control, Func <TData> output, Action <TData> input, IValueConverter <string, TData> converter) { var textBinding = new TextBinding <TData>(control, output, input, converter); bindings.Bind( output, data => textBinding.UpdateTextView(data), textBinding); }
/// <summary> /// Bind the items of a UICollectionView to a collection. /// </summary> /// <typeparam name="T">The type of item in the collection.</typeparam> /// <param name="bindings">The binding manager.</param> /// <param name="control">The ListView to bind.</param> /// <param name="output">The collection to which to bind.</param> /// <param name="selection">Get current selection.</param> /// <param name="selected">Set the current selection.</param> /// <param name="bind">The delegate that binds each item of the collection.</param> public static void BindItems <T>( this BindingManager bindings, UITableView control, Func <IEnumerable <T> > output, Func <T> selection, Action <T> selected, Action <UITableViewCell, T, BindingManager> bind) { var binding = new CollectionBinding <T>(control, bind, selected); control.Source = binding; bindings.Bind(() => output().ToList(), items => binding.UpdateItems(items), binding); }
/// <summary> /// Bind the items of a ListView to a collection. /// </summary> /// <typeparam name="T">The type of item in the collection.</typeparam> /// <param name="bindings">The binding manager.</param> /// <param name="control">The ListView to bind.</param> /// <param name="output">The collection to which to bind.</param> /// <param name="layoutId">The ID of the layout resource to use for the items of the ListView.</param> /// <param name="selection">Get the current selection.</param> /// <param name="selected">Set the current selection.</param> /// <param name="bind">The delegate that binds each item of the collection.</param> public static void BindItems <T>( this BindingManager bindings, ListView control, Func <IEnumerable <T> > output, int layoutId, Func <T> selection, Action <T> selected, Action <View, T, BindingManager> bind) { var adapter = new BindingArrayAdapter <T>(control, layoutId, selection, selected, bind); control.Adapter = adapter; bindings.Bind(() => output().ToList(), items => adapter.UpdateItems(items), adapter); }
/// <summary> /// Bind the Value property of a UIStepper to a property using a value converter. /// </summary> /// <param name="bindings">The binding manager.</param> /// <param name="control">The stepper.</param> /// <param name="output">A function that gets the property.</param> /// <param name="input">An action sets the property.</param> /// <param name="converter">A custom value converter to type double.</param> /// <typeparam name="TData">The type of property to which the value is bound.</typeparam> public static void BindValue <TData>(this BindingManager bindings, UIStepper control, Func <TData> output, Action <TData> input, IDisplayDataConverter <double, TData> converter) { bindings.Bind(output, s => control.Value = converter.ConvertOutput(s), new ValueBinding <TData>(control, input, converter)); }
/// <summary> /// Bind the text of a text view to a read-only property using a value converter. /// </summary> /// <param name="bindings">The binding manager.</param> /// <param name="control">The label.</param> /// <param name="output">A function that gets the property.</param> /// <param name="converter">A custom value converter to string.</param> /// <typeparam name="TData">The type of the property.</typeparam> public static void BindText <TData>(this BindingManager bindings, TextView control, Func <TData> output, IValueConverter <string, TData> converter) { bindings.Bind( output, data => control.Text = converter.ConvertOutput(data)); }
/// <summary> /// Bind the Text of a UITextField to a property using a value converter. /// </summary> /// <param name="bindings">The binding manager.</param> /// <param name="control">The text field.</param> /// <param name="output">A function that gets the property.</param> /// <param name="input">A function that sets the property.</param> /// <param name="converter">A custom value converter to string.</param> /// <typeparam name="TData">The type of the property.</typeparam> public static void BindText <TData>(this BindingManager bindings, UITextField control, Func <TData> output, Action <TData> input, IValueConverter <string, TData> converter) { bindings.Bind(output, s => control.Text = converter.ConvertOutput(s), new TextBinding <TData>(control, input, converter)); }
/// <summary> /// Bind the Text of a UILabel to a read-only property using a value converter. /// </summary> /// <param name="bindings">The binding manager.</param> /// <param name="control">The label.</param> /// <param name="output">A function that gets the property.</param> /// <param name="converter">A custom value converter to string.</param> /// <typeparam name="TData">The type of the property.</typeparam> public static void BindText <TData>(this BindingManager bindings, UILabel control, Func <TData> output, IValueConverter <string, TData> converter) { bindings.Bind(output, s => control.Text = converter.ConvertOutput(s)); }
/// <summary> /// Bind the value of a number picker to a property using a value converter. /// </summary> /// <param name="bindings">The binding manager.</param> /// <param name="control">The number picker.</param> /// <param name="output">A function that gets the property.</param> /// <param name="input">An action sets the property.</param> /// <param name="converter">A custom value converter to type double.</param> /// <typeparam name="TData">The type of property to which the value is bound.</typeparam> public static void BindValue <TData>(this BindingManager bindings, NumberPicker control, Func <TData> output, Action <TData> input, IValueConverter <int, TData> converter) { bindings.Bind(output, s => control.Value = converter.ConvertOutput(s), new ValueBinding <TData>(control, input, converter)); }
/// <summary> /// Bind a button's command and Enabled property to an action and a condition. /// </summary> /// <param name="bindings">The binding manager.</param> /// <param name="control">The button.</param> /// <param name="action">The ation to perform when the button is tapped.</param> /// <param name="condition">The condition that controls when the button is enabled.</param> public static void BindCommand(this BindingManager bindings, Button control, Action action, Func <bool> condition) { bindings.Bind(condition, b => control.Enabled = b, new ButtonClickSubscription(control, action)); }
/// <summary> /// Bind a button's command to an action. /// </summary> /// <param name="bindings">The binding manager.</param> /// <param name="control">The button.</param> /// <param name="action">The action to perform when the button is tapped.</param> public static void BindCommand(this BindingManager bindings, Button control, Action action) { bindings.Bind(new ButtonClickSubscription(control, action)); }