<Type Name="Binding" FullName="Microsoft.Maui.Controls.Binding">
  <TypeSignature Language="C#" Value="public sealed class Binding : Microsoft.Maui.Controls.BindingBase" />
  <TypeSignature Language="ILAsm" Value=".class public auto ansi sealed beforefieldinit Binding extends Microsoft.Maui.Controls.BindingBase" />
  <TypeSignature Language="DocId" Value="T:Microsoft.Maui.Controls.Binding" />
  <TypeSignature Language="F#" Value="type Binding = class&#xA;    inherit BindingBase" />
  <AssemblyInfo>
    <AssemblyName>Microsoft.Maui.Controls.Core</AssemblyName>
    <AssemblyVersion>0.0.0.0</AssemblyVersion>
    <AssemblyVersion>1.0.0.0</AssemblyVersion>
    <AssemblyVersion>1.1.0.0</AssemblyVersion>
    <AssemblyVersion>1.2.0.0</AssemblyVersion>
    <AssemblyVersion>1.3.0.0</AssemblyVersion>
    <AssemblyVersion>1.4.0.0</AssemblyVersion>
    <AssemblyVersion>1.5.0.0</AssemblyVersion>
    <AssemblyVersion>2.0.0.0</AssemblyVersion>
  </AssemblyInfo>
  <Base>
    <BaseTypeName>Microsoft.Maui.Controls.BindingBase</BaseTypeName>
  </Base>
  <Interfaces />
  <Docs>
    <summary>A single 1:1 immutable data binding.</summary>
    <remarks>This class is immutable.</remarks>
  </Docs>
  <Members>
    <Member MemberName=".ctor">
      <MemberSignature Language="C#" Value="public Binding ();" />
      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
      <MemberSignature Language="DocId" Value="M:Microsoft.Maui.Controls.Binding.#ctor" />
      <MemberType>Constructor</MemberType>
      <AssemblyInfo>
        <AssemblyVersion>0.0.0.0</AssemblyVersion>
        <AssemblyVersion>1.0.0.0</AssemblyVersion>
        <AssemblyVersion>1.1.0.0</AssemblyVersion>
        <AssemblyVersion>1.2.0.0</AssemblyVersion>
        <AssemblyVersion>1.3.0.0</AssemblyVersion>
        <AssemblyVersion>1.4.0.0</AssemblyVersion>
        <AssemblyVersion>1.5.0.0</AssemblyVersion>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
        <AssemblyName>Microsoft.Maui.Controls.Core</AssemblyName>
      </AssemblyInfo>
      <Parameters />
      <Docs>
        <summary>Constructs and initializes a new instance of the <see cref="T:Microsoft.Maui.Controls.Binding" /> class.</summary>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
    <Member MemberName=".ctor">
      <MemberSignature Language="C#" Value="public Binding (string path, Microsoft.Maui.Controls.BindingMode mode = Microsoft.Maui.Controls.BindingMode.Default, Microsoft.Maui.Controls.IValueConverter converter = default, object converterParameter = default, string stringFormat = default, object source = default);" />
      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor(string path, valuetype Microsoft.Maui.Controls.BindingMode mode, class Microsoft.Maui.Controls.IValueConverter converter, object converterParameter, string stringFormat, object source) cil managed" />
      <MemberSignature Language="DocId" Value="M:Microsoft.Maui.Controls.Binding.#ctor(System.String,Microsoft.Maui.Controls.BindingMode,Microsoft.Maui.Controls.IValueConverter,System.Object,System.String,System.Object)" />
      <MemberSignature Language="F#" Value="new Microsoft.Maui.Controls.Binding : string * Microsoft.Maui.Controls.BindingMode * Microsoft.Maui.Controls.IValueConverter * obj * string * obj -&gt; Microsoft.Maui.Controls.Binding" Usage="new Microsoft.Maui.Controls.Binding (path, mode, converter, converterParameter, stringFormat, source)" />
      <MemberType>Constructor</MemberType>
      <AssemblyInfo>
        <AssemblyVersion>0.0.0.0</AssemblyVersion>
        <AssemblyVersion>1.3.0.0</AssemblyVersion>
        <AssemblyVersion>1.4.0.0</AssemblyVersion>
        <AssemblyVersion>1.5.0.0</AssemblyVersion>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
        <AssemblyName>Microsoft.Maui.Controls.Core</AssemblyName>
      </AssemblyInfo>
      <Parameters>
        <Parameter Name="path" Type="System.String" />
        <Parameter Name="mode" Type="Microsoft.Maui.Controls.BindingMode" />
        <Parameter Name="converter" Type="Microsoft.Maui.Controls.IValueConverter" />
        <Parameter Name="converterParameter" Type="System.Object" />
        <Parameter Name="stringFormat" Type="System.String" />
        <Parameter Name="source" Type="System.Object" />
      </Parameters>
      <Docs>
        <param name="path">The property path.</param>
        <param name="mode">The binding mode. This property is optional. Default is <see cref="F:Microsoft.Maui.Controls.BindingMode.Default" />.</param>
        <param name="converter">The converter. This parameter is optional. Default is <see langword="null" />.</param>
        <param name="converterParameter">An user-defined parameter to pass to the converter. This parameter is optional. Default is <see langword="null" />.</param>
        <param name="stringFormat">A String format. This parameter is optional. Default is <see langword="null" />.</param>
        <param name="source">An object used as the source for this binding. This parameter is optional. Default is <see langword="null" />.</param>
        <summary>Constructs and initializes a new instance of the <see cref="T:Microsoft.Maui.Controls.Binding" /> class.</summary>
        <remarks>
          <para>The following example shows how to set a binding to a property with a BindingMode and Converter:</para>
          <example>
            <code lang="csharp lang-csharp"><![CDATA[
public class PersonViewModel
{
  public string Name { get; set; }
  public string Company { get; set; }
}
    
public class ReverseConverter : IValueConverter
{
  public object Convert (object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
  {
    var s = value as string;
    if (s == null)
      return value;
    return new string (s.Reverse ().ToArray ());
  }
    
  public object ConvertBack (object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
  {
    var s = value as string;
    if (s == null)
      return value;
    return new string (s.Reverse ().ToArray ());
  }
}
    
var label = new Label ();
PersonViewModel person;
label.BindingContext = person = new PersonViewModel { Name = "John Doe", Company= "Xamarin" };
label.SetBinding (Label.TextProperty, new Binding ("Name", mode: BindingMode.TwoWay, converter: new ReverseConverter ()));
Debug.WriteLine (label.Text); //prints "eoD nhoJ". ReverseConverter.Convert () is invoked in this case.
    
label.Text = "ooF";
Debug.WriteLine (person.Name); //prints "Foo". ReverseConverter.ConvertBack () is invoked in this case. The label Text change is propagated back as the BindingMode is TwoWay.
        ]]></code>
          </example>
        </remarks>
      </Docs>
    </Member>
    <Member MemberName="Converter">
      <MemberSignature Language="C#" Value="public Microsoft.Maui.Controls.IValueConverter Converter { get; set; }" />
      <MemberSignature Language="ILAsm" Value=".property instance class Microsoft.Maui.Controls.IValueConverter Converter" />
      <MemberSignature Language="DocId" Value="P:Microsoft.Maui.Controls.Binding.Converter" />
      <MemberSignature Language="F#" Value="member this.Converter : Microsoft.Maui.Controls.IValueConverter with get, set" Usage="Microsoft.Maui.Controls.Binding.Converter" />
      <MemberType>Property</MemberType>
      <AssemblyInfo>
        <AssemblyVersion>0.0.0.0</AssemblyVersion>
        <AssemblyVersion>1.0.0.0</AssemblyVersion>
        <AssemblyVersion>1.1.0.0</AssemblyVersion>
        <AssemblyVersion>1.2.0.0</AssemblyVersion>
        <AssemblyVersion>1.3.0.0</AssemblyVersion>
        <AssemblyVersion>1.4.0.0</AssemblyVersion>
        <AssemblyVersion>1.5.0.0</AssemblyVersion>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
        <AssemblyName>Microsoft.Maui.Controls.Core</AssemblyName>
      </AssemblyInfo>
      <ReturnValue>
        <ReturnType>Microsoft.Maui.Controls.IValueConverter</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>Gets or sets the converter to be used for this binding ?</summary>
        <value>An IValueConverter, or <see langword="null" />.</value>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
    <Member MemberName="ConverterParameter">
      <MemberSignature Language="C#" Value="public object ConverterParameter { get; set; }" />
      <MemberSignature Language="ILAsm" Value=".property instance object ConverterParameter" />
      <MemberSignature Language="DocId" Value="P:Microsoft.Maui.Controls.Binding.ConverterParameter" />
      <MemberSignature Language="F#" Value="member this.ConverterParameter : obj with get, set" Usage="Microsoft.Maui.Controls.Binding.ConverterParameter" />
      <MemberType>Property</MemberType>
      <AssemblyInfo>
        <AssemblyVersion>0.0.0.0</AssemblyVersion>
        <AssemblyVersion>1.0.0.0</AssemblyVersion>
        <AssemblyVersion>1.1.0.0</AssemblyVersion>
        <AssemblyVersion>1.2.0.0</AssemblyVersion>
        <AssemblyVersion>1.3.0.0</AssemblyVersion>
        <AssemblyVersion>1.4.0.0</AssemblyVersion>
        <AssemblyVersion>1.5.0.0</AssemblyVersion>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
        <AssemblyName>Microsoft.Maui.Controls.Core</AssemblyName>
      </AssemblyInfo>
      <ReturnValue>
        <ReturnType>System.Object</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>Gets or sets the parameter passed as argument to the converter.</summary>
        <value>An object, or <see langword="null" />.</value>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
    <Member MemberName="Create&lt;TSource&gt;">
      <MemberSignature Language="C#" Value="public static Microsoft.Maui.Controls.Binding Create&lt;TSource&gt; (System.Linq.Expressions.Expression&lt;Func&lt;TSource,object&gt;&gt; propertyGetter, Microsoft.Maui.Controls.BindingMode mode = Microsoft.Maui.Controls.BindingMode.Default, Microsoft.Maui.Controls.IValueConverter converter = default, object converterParameter = default, string stringFormat = default);" />
      <MemberSignature Language="ILAsm" Value=".method public static hidebysig class Microsoft.Maui.Controls.Binding Create&lt;TSource&gt;(class System.Linq.Expressions.Expression`1&lt;class System.Func`2&lt;!!TSource, object&gt;&gt; propertyGetter, valuetype Microsoft.Maui.Controls.BindingMode mode, class Microsoft.Maui.Controls.IValueConverter converter, object converterParameter, string stringFormat) cil managed" />
      <MemberSignature Language="DocId" Value="M:Microsoft.Maui.Controls.Binding.Create``1(System.Linq.Expressions.Expression{System.Func{``0,System.Object}},Microsoft.Maui.Controls.BindingMode,Microsoft.Maui.Controls.IValueConverter,System.Object,System.String)" />
      <MemberSignature Language="F#" Value="static member Create : System.Linq.Expressions.Expression&lt;Func&lt;'Source, obj&gt;&gt; * Microsoft.Maui.Controls.BindingMode * Microsoft.Maui.Controls.IValueConverter * obj * string -&gt; Microsoft.Maui.Controls.Binding" Usage="Microsoft.Maui.Controls.Binding.Create (propertyGetter, mode, converter, converterParameter, stringFormat)" />
      <MemberType>Method</MemberType>
      <AssemblyInfo>
        <AssemblyVersion>0.0.0.0</AssemblyVersion>
        <AssemblyVersion>1.0.0.0</AssemblyVersion>
        <AssemblyVersion>1.1.0.0</AssemblyVersion>
        <AssemblyVersion>1.2.0.0</AssemblyVersion>
        <AssemblyVersion>1.3.0.0</AssemblyVersion>
        <AssemblyVersion>1.4.0.0</AssemblyVersion>
        <AssemblyVersion>1.5.0.0</AssemblyVersion>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
        <AssemblyName>Microsoft.Maui.Controls.Core</AssemblyName>
      </AssemblyInfo>
      <Attributes>
        <Attribute>
          <AttributeName>System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)</AttributeName>
        </Attribute>
        <Attribute>
          <AttributeName>System.Obsolete</AttributeName>
        </Attribute>
      </Attributes>
      <ReturnValue>
        <ReturnType>Microsoft.Maui.Controls.Binding</ReturnType>
      </ReturnValue>
      <TypeParameters>
        <TypeParameter Name="TSource" />
      </TypeParameters>
      <Parameters>
        <Parameter Name="propertyGetter" Type="System.Linq.Expressions.Expression&lt;System.Func&lt;TSource,System.Object&gt;&gt;" />
        <Parameter Name="mode" Type="Microsoft.Maui.Controls.BindingMode" />
        <Parameter Name="converter" Type="Microsoft.Maui.Controls.IValueConverter" />
        <Parameter Name="converterParameter" Type="System.Object" />
        <Parameter Name="stringFormat" Type="System.String" />
      </Parameters>
      <Docs>
        <typeparam name="TSource">The type of the source of the binding.</typeparam>
        <param name="propertyGetter">An expression used to retrieve the binding path.</param>
        <param name="mode">The binding mode. This property is optional. Default is <see cref="F:Microsoft.Maui.Controls.BindingMode.Default" />.</param>
        <param name="converter">The converter. This parameter is optional. Default is <see langword="null" />.</param>
        <param name="converterParameter">An user-defined parameter to pass to the converter. This parameter is optional. Default is <see langword="null" />.</param>
        <param name="stringFormat">A String format. This parameter is optional. Default is <see langword="null" />.</param>
        <summary>This is a convenient factory method to create a binding from an expression, instead of a property name. This api is more resilient to refactoring.</summary>
        <returns>A newly created binding.</returns>
        <remarks>
          <para>The following example shows how to set a binding to a property :</para>
          <example>
            <code lang="csharp lang-csharp"><![CDATA[
public class PersonViewModel
{
  public string Name { get; set; }
  public string Company { get; set; }
}
    
var label = new Label ();
PersonViewModel person;
label.BindingContext = person = new PersonViewModel { Name = "John Doe", Company = "Microsoft" };
label.SetBinding (Label.TextProperty, Binding.Create<PersonViewModel> (vm => vm.Name));
Debug.WriteLine (label.Text); //prints "John Doe".
        ]]></code>
          </example>
        </remarks>
      </Docs>
    </Member>
    <Member MemberName="DoNothing">
      <MemberSignature Language="C#" Value="public static readonly object DoNothing;" />
      <MemberSignature Language="ILAsm" Value=".field public static initonly object DoNothing" />
      <MemberSignature Language="DocId" Value="F:Microsoft.Maui.Controls.Binding.DoNothing" />
      <MemberSignature Language="F#" Value=" staticval mutable DoNothing : obj" Usage="Microsoft.Maui.Controls.Binding.DoNothing" />
      <MemberType>Field</MemberType>
      <AssemblyInfo>
        <AssemblyName>Microsoft.Maui.Controls.Core</AssemblyName>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
      </AssemblyInfo>
      <ReturnValue>
        <ReturnType>System.Object</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>To be added.</summary>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
    <Member MemberName="Path">
      <MemberSignature Language="C#" Value="public string Path { get; set; }" />
      <MemberSignature Language="ILAsm" Value=".property instance string Path" />
      <MemberSignature Language="DocId" Value="P:Microsoft.Maui.Controls.Binding.Path" />
      <MemberSignature Language="F#" Value="member this.Path : string with get, set" Usage="Microsoft.Maui.Controls.Binding.Path" />
      <MemberType>Property</MemberType>
      <AssemblyInfo>
        <AssemblyVersion>0.0.0.0</AssemblyVersion>
        <AssemblyVersion>1.0.0.0</AssemblyVersion>
        <AssemblyVersion>1.1.0.0</AssemblyVersion>
        <AssemblyVersion>1.2.0.0</AssemblyVersion>
        <AssemblyVersion>1.3.0.0</AssemblyVersion>
        <AssemblyVersion>1.4.0.0</AssemblyVersion>
        <AssemblyVersion>1.5.0.0</AssemblyVersion>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
        <AssemblyName>Microsoft.Maui.Controls.Core</AssemblyName>
      </AssemblyInfo>
      <ReturnValue>
        <ReturnType>System.String</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>Gets or sets the path of the property</summary>
        <value>A string indicating the path to the property.</value>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
    <Member MemberName="Source">
      <MemberSignature Language="C#" Value="public object Source { get; set; }" />
      <MemberSignature Language="ILAsm" Value=".property instance object Source" />
      <MemberSignature Language="DocId" Value="P:Microsoft.Maui.Controls.Binding.Source" />
      <MemberSignature Language="F#" Value="member this.Source : obj with get, set" Usage="Microsoft.Maui.Controls.Binding.Source" />
      <MemberType>Property</MemberType>
      <AssemblyInfo>
        <AssemblyVersion>0.0.0.0</AssemblyVersion>
        <AssemblyVersion>1.3.0.0</AssemblyVersion>
        <AssemblyVersion>1.4.0.0</AssemblyVersion>
        <AssemblyVersion>1.5.0.0</AssemblyVersion>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
        <AssemblyName>Microsoft.Maui.Controls.Core</AssemblyName>
      </AssemblyInfo>
      <ReturnValue>
        <ReturnType>System.Object</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>Gets or sets the source of the binding.</summary>
        <value>An object used as the binding source.</value>
        <remarks>If the Source is not null, the BindingContext is ignored, and the Source is used instead. This allows to set a source for a single Binding, and not for all the Bindings applied to the BindableObject.</remarks>
      </Docs>
    </Member>
    <Member MemberName="UpdateSourceEventName">
      <MemberSignature Language="C#" Value="public string UpdateSourceEventName { get; set; }" />
      <MemberSignature Language="ILAsm" Value=".property instance string UpdateSourceEventName" />
      <MemberSignature Language="DocId" Value="P:Microsoft.Maui.Controls.Binding.UpdateSourceEventName" />
      <MemberSignature Language="F#" Value="member this.UpdateSourceEventName : string with get, set" Usage="Microsoft.Maui.Controls.Binding.UpdateSourceEventName" />
      <MemberType>Property</MemberType>
      <AssemblyInfo>
        <AssemblyVersion>0.0.0.0</AssemblyVersion>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
        <AssemblyName>Microsoft.Maui.Controls.Core</AssemblyName>
      </AssemblyInfo>
      <Attributes>
        <Attribute>
          <AttributeName>System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)</AttributeName>
        </Attribute>
      </Attributes>
      <ReturnValue>
        <ReturnType>System.String</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>For internal use by the Microsoft.Maui.Controls platform.</summary>
        <value>To be added.</value>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
  </Members>
</Type>
