/// <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);
        }
Beispiel #3
0
        /// <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));
 }
Beispiel #6
0
 /// <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));
 }
Beispiel #7
0
 /// <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));
 }
Beispiel #9
0
 /// <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));
 }
Beispiel #10
0
 /// <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));
 }