<Type Name="BindingBase" FullName="Microsoft.Maui.Controls.BindingBase">
  <TypeSignature Language="C#" Value="public abstract class BindingBase" />
  <TypeSignature Language="ILAsm" Value=".class public auto ansi abstract beforefieldinit BindingBase extends System.Object" />
  <TypeSignature Language="DocId" Value="T:Microsoft.Maui.Controls.BindingBase" />
  <TypeSignature Language="F#" Value="type BindingBase = class" />
  <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>System.Object</BaseTypeName>
  </Base>
  <Interfaces />
  <Docs>
    <summary>An abstract class that provides a <see cref="T:Microsoft.Maui.Controls.BindingMode" /> and a formatting option.</summary>
    <remarks>To be added.</remarks>
  </Docs>
  <Members>
    <Member MemberName="DisableCollectionSynchronization">
      <MemberSignature Language="C#" Value="public static void DisableCollectionSynchronization (System.Collections.IEnumerable collection);" />
      <MemberSignature Language="ILAsm" Value=".method public static hidebysig void DisableCollectionSynchronization(class System.Collections.IEnumerable collection) cil managed" />
      <MemberSignature Language="DocId" Value="M:Microsoft.Maui.Controls.BindingBase.DisableCollectionSynchronization(System.Collections.IEnumerable)" />
      <MemberSignature Language="F#" Value="static member DisableCollectionSynchronization : System.Collections.IEnumerable -&gt; unit" Usage="Microsoft.Maui.Controls.BindingBase.DisableCollectionSynchronization collection" />
      <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>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="collection" Type="System.Collections.IEnumerable" />
      </Parameters>
      <Docs>
        <param name="collection">The collection on which to stop synchronization.</param>
        <summary>Stops synchronization on the <paramref name="collection" />.</summary>
        <remarks>See <see cref="M:Microsoft.Maui.Controls.BindingBase.EnableCollectionSynchronization(System.Collections.IEnumerable,System.Object,Microsoft.Maui.Controls.CollectionSynchronizationCallback)" /> for more information on enabling and disabling synchronization of collections in multithreaded environments.</remarks>
      </Docs>
    </Member>
    <Member MemberName="EnableCollectionSynchronization">
      <MemberSignature Language="C#" Value="public static void EnableCollectionSynchronization (System.Collections.IEnumerable collection, object context, Microsoft.Maui.Controls.CollectionSynchronizationCallback callback);" />
      <MemberSignature Language="ILAsm" Value=".method public static hidebysig void EnableCollectionSynchronization(class System.Collections.IEnumerable collection, object context, class Microsoft.Maui.Controls.CollectionSynchronizationCallback callback) cil managed" />
      <MemberSignature Language="DocId" Value="M:Microsoft.Maui.Controls.BindingBase.EnableCollectionSynchronization(System.Collections.IEnumerable,System.Object,Microsoft.Maui.Controls.CollectionSynchronizationCallback)" />
      <MemberSignature Language="F#" Value="static member EnableCollectionSynchronization : System.Collections.IEnumerable * obj * Microsoft.Maui.Controls.CollectionSynchronizationCallback -&gt; unit" Usage="Microsoft.Maui.Controls.BindingBase.EnableCollectionSynchronization (collection, context, callback)" />
      <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>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="collection" Type="System.Collections.IEnumerable" />
        <Parameter Name="context" Type="System.Object" />
        <Parameter Name="callback" Type="Microsoft.Maui.Controls.CollectionSynchronizationCallback" />
      </Parameters>
      <Docs>
        <param name="collection">The collection that will be read or updated.</param>
        <param name="context">The context or lock object that will be passed to <paramref name="callback" />. May be <see langword="null" />.</param>
        <param name="callback">The synchronization callback.</param>
        <summary>Starts synchronization on the <paramref name="collection" /> by using <paramref name="callback" /> and <paramref name="context" />.</summary>
        <remarks>
          <para>Application developers implement <paramref name="callback" /> and pass it to the <see cref="M:Microsoft.Maui.Controls.BindingBase.EnableCollectionSynchronization(System.Collections.IEnumerable,System.Object,Microsoft.Maui.Controls.CollectionSynchronizationCallback)" /> method to enable correct multithreaded access to <paramref name="collection" />. After synchronization is enabled, the Microsoft.Maui.Controls framework passes an access method, <paramref name="context" />, and a <see langword="bool" /> that indicates whether write access is needed, to the application developer's implementation of <see cref="T:Microsoft.Maui.Controls.CollectionSynchronizationCallback" /> each time that the framework needs to modify the collection in a multithreaded environment. The application developer's implementation should decide, based on the <paramref name="context" /> object (which may be merely a locking object or the object on which the collection lives) and the value of the <paramref name="writeAccess" /><see langword="bool" /> parameter, whether or not to <c>lock</c> while calling <paramref name="accessMethod" />.</para>
          <para>Because Microsoft.Maui.Controls maintains a weak reference to <paramref name="collection" />, application developers do not need to call <see cref="M:Microsoft.Maui.Controls.BindingBase.DisableCollectionSynchronization(System.Collections.IEnumerable)" /> to aid in garbage collection.</para>
        </remarks>
      </Docs>
    </Member>
    <Member MemberName="FallbackValue">
      <MemberSignature Language="C#" Value="public object FallbackValue { get; set; }" />
      <MemberSignature Language="ILAsm" Value=".property instance object FallbackValue" />
      <MemberSignature Language="DocId" Value="P:Microsoft.Maui.Controls.BindingBase.FallbackValue" />
      <MemberSignature Language="F#" Value="member this.FallbackValue : obj with get, set" Usage="Microsoft.Maui.Controls.BindingBase.FallbackValue" />
      <MemberType>Property</MemberType>
      <AssemblyInfo>
        <AssemblyName>Microsoft.Maui.Controls.Core</AssemblyName>
        <AssemblyVersion>0.0.0.0</AssemblyVersion>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
      </AssemblyInfo>
      <ReturnValue>
        <ReturnType>System.Object</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>Gets or sets the value to use instead of the default value for the property, if no specified value exists.</summary>
        <value>The value to use instead of the default value for the property, if no specified value exists</value>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
    <Member MemberName="Mode">
      <MemberSignature Language="C#" Value="public Microsoft.Maui.Controls.BindingMode Mode { get; set; }" />
      <MemberSignature Language="ILAsm" Value=".property instance valuetype Microsoft.Maui.Controls.BindingMode Mode" />
      <MemberSignature Language="DocId" Value="P:Microsoft.Maui.Controls.BindingBase.Mode" />
      <MemberSignature Language="F#" Value="member this.Mode : Microsoft.Maui.Controls.BindingMode with get, set" Usage="Microsoft.Maui.Controls.BindingBase.Mode" />
      <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.BindingMode</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>Gets or sets the mode for this binding.</summary>
        <value>To be added.</value>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
    <Member MemberName="StringFormat">
      <MemberSignature Language="C#" Value="public string StringFormat { get; set; }" />
      <MemberSignature Language="ILAsm" Value=".property instance string StringFormat" />
      <MemberSignature Language="DocId" Value="P:Microsoft.Maui.Controls.BindingBase.StringFormat" />
      <MemberSignature Language="F#" Value="member this.StringFormat : string with get, set" Usage="Microsoft.Maui.Controls.BindingBase.StringFormat" />
      <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 string format for this binding.</summary>
        <value>
          A string specifying the format for the value of this binding.
        </value>
        <remarks>
          <para>
            Used for providing a display format for the binding value or compositing the value with other
            text. Implementors of <see cref="T:Microsoft.Maui.Controls.BindingBase" /> decide how the string format is utilized, but
            all support standard <see cref="M:System.String.Format*" /> conventions.
          </para>
          <para>
            <see cref="T:Microsoft.Maui.Controls.Binding" /> allows for one argument for its singular value.
          </para>
          <example>
            <para>
              A simple example showing compositing text and determining the display format for the value with a
              <see cref="T:Microsoft.Maui.Controls.Binding" /></para>
            <code language="C#"><![CDATA[
Label label = new Label();
label.AddBinding (new Binding (Label.TextProperty, "Price") {
  StringFormat = "Price: {0:C2}"
});
]]></code>
          </example>
        </remarks>
        <altmember cref="M:System.String.Format*" />
      </Docs>
    </Member>
    <Member MemberName="TargetNullValue">
      <MemberSignature Language="C#" Value="public object TargetNullValue { get; set; }" />
      <MemberSignature Language="ILAsm" Value=".property instance object TargetNullValue" />
      <MemberSignature Language="DocId" Value="P:Microsoft.Maui.Controls.BindingBase.TargetNullValue" />
      <MemberSignature Language="F#" Value="member this.TargetNullValue : obj with get, set" Usage="Microsoft.Maui.Controls.BindingBase.TargetNullValue" />
      <MemberType>Property</MemberType>
      <AssemblyInfo>
        <AssemblyName>Microsoft.Maui.Controls.Core</AssemblyName>
        <AssemblyVersion>0.0.0.0</AssemblyVersion>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
      </AssemblyInfo>
      <ReturnValue>
        <ReturnType>System.Object</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>Gets or sets the value to supply for a bound property when the target of the binding is <see langword="null" />.</summary>
        <value>The value to supply for a bound property when the target of the binding is <see langword="null" />.</value>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
    <Member MemberName="ThrowIfApplied">
      <MemberSignature Language="C#" Value="protected void ThrowIfApplied ();" />
      <MemberSignature Language="ILAsm" Value=".method familyhidebysig instance void ThrowIfApplied() cil managed" />
      <MemberSignature Language="DocId" Value="M:Microsoft.Maui.Controls.BindingBase.ThrowIfApplied" />
      <MemberSignature Language="F#" Value="member this.ThrowIfApplied : unit -&gt; unit" Usage="bindingBase.ThrowIfApplied " />
      <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>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>Throws an <see cref="T:System.InvalidOperationException" /> if the binding has been applied.</summary>
        <remarks>
          <para>Use this method in property setters as bindings can not be changed once applied.</para>
        </remarks>
      </Docs>
    </Member>
  </Members>
</Type>
