Para ver el artículo en inglés, active la casilla Inglés. También puede ver el texto en inglés en una ventana emergente si pasa el puntero del mouse por el texto.
Traducción
Inglés
Esta documentación está archivada y no tiene mantenimiento.

FrameworkElement.BindingGroup (Propiedad)

Obtiene o establece el BindingGroup que se usa para el elemento.

Espacio de nombres:  System.Windows
Ensamblado:  PresentationFramework (en PresentationFramework.dll)
XMLNS para XAML: http://schemas.microsoft.com/winfx/2006/xaml/presentation, http://schemas.microsoft.com/netfx/2007/xaml/presentation

[LocalizabilityAttribute(LocalizationCategory.NeverLocalize)]
public BindingGroup BindingGroup { get; set; }
<object>
  <object.BindingGroup>
    <BindingGroup .../>
  </object.BindingGroup>
</object>

Valor de propiedad

Tipo: System.Windows.Data.BindingGroup
Objeto BindingGroup que se usa para el elemento.

Campo de identificador

BindingGroupProperty

Propiedades de metadatos establecidas en true

Inherits

BindingGroup puede usarse para validar los valores de varias propiedades de un objeto. Por ejemplo, supongamos que una aplicación solicita al usuario que escriba una dirección y, a continuación, rellena un objeto de tipo Address (que tiene las propiedades Street, City, ZipCode y Country) con los valores proporcionados por el usuario. La aplicación tiene un panel que contiene cuatro controles TextBox, cada uno de los cuales se enlaza a una de las propiedades del objeto. Puede utilizar ValidationRule en BindingGroup para validar el objeto Address . Por ejemplo, la regla ValidationRule puede garantizar que el código postal sea válido para el país de la dirección.

Los elementos secundarios heredan BindingGroup de sus elementos primarios, al igual que ocurre con cualquier otra propiedad heredable.

Los ejemplos siguientes forman parte de una aplicación que comprueba si el usuario ha establecido las propiedades de dos objetos en valores iguales. En el primer ejemplo se crean dos controles TextBox, cada uno de los cuales se enlaza a un origen de datos diferente. StackPanel tiene un BindingGroup que contiene una regla ValidationRule que comprueba si las dos cadenas son iguales.


<StackPanel>
  <StackPanel.Resources>
    <src:Type1 x:Key="object1" />
    <src:Type2 x:Key="object2" />
  </StackPanel.Resources>

  <StackPanel Name="sp1"
              Margin="5"
              DataContext="{Binding Source={StaticResource object1}}"
              Validation.ValidationAdornerSite="{Binding ElementName=label1}"
              Orientation="Horizontal"
              HorizontalAlignment="Center">

    <StackPanel.BindingGroup>
      <BindingGroup Name="bindingGroup">
        <BindingGroup.ValidationRules>
          <src:BindingGroupValidationRule ValidatesOnTargetUpdated="True" />
        </BindingGroup.ValidationRules>
      </BindingGroup>
    </StackPanel.BindingGroup>

    <TextBlock Text="First string" />

    <TextBox Width="150"
             Text="{Binding Path=PropertyA}" />

    <TextBlock Text="Second string" />

    <TextBox Width="150"
             Text="{Binding Source={StaticResource object2}, 
      Path=PropertyB, BindingGroupName=bindingGroup, 
      TargetNullValue=please enter a string}" />

  </StackPanel>

  <Label Name="label1"
         Content="{Binding ElementName=sp1, Path=(Validation.Errors)[0].ErrorContent}"
         Margin="5"
         Foreground="Red"
         HorizontalAlignment="Center" />

  <Button HorizontalAlignment="Center"
          Click="Button_Click"
          IsDefault="True">
    _Submit
  </Button>

  <StackPanel Orientation="Horizontal">
    <TextBlock Text="First string:"
               FontWeight="Bold" />
    <TextBlock Text="{Binding Source={StaticResource object1}, 
      Path=PropertyA, TargetNullValue=--}" />
  </StackPanel>

  <StackPanel Orientation="Horizontal">
    <TextBlock Text="Second string:"
               FontWeight="Bold" />
    <TextBlock Text="{Binding Source={StaticResource object2}, 
      Path=PropertyB, TargetNullValue=--}" />
  </StackPanel>
</StackPanel>


En el ejemplo siguiente se muestra la regla ValidationRule utilizada en el ejemplo anterior. En la invalidación del método Validate, el ejemplo obtiene cada objeto de origen de BindingGroup y comprueba si las propiedades de los objetos son iguales.


public class Type1
{
    public string PropertyA { get; set; }

    public Type1()
    {
        PropertyA = "Default Value";
    }
}

public class Type2
{
    public string PropertyB { get; set; }

    public Type2()
    {
    }
}

public class BindingGroupValidationRule : ValidationRule
{
    public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo)
    {
        BindingGroup bg = value as BindingGroup;

        Type1 object1 = null;
        Type2 object2 = null;

        foreach (object item in bg.Items)
        {
            if (item is Type1)
            {
                object1 = item as Type1;
            }

            if (item is Type2)
            {
                object2 = item as Type2;
            }
        }

        if (object1 == null || object2 == null)
        {
            return new ValidationResult(false, "BindingGroup did not find source object.");
        }

        string string1 = bg.GetValue(object1, "PropertyA") as string;
        string string2 = bg.GetValue(object2, "PropertyB") as string;

        if (string1 != string2)
        {
            return new ValidationResult(false, "The two strings must be identical.");
        }

        return ValidationResult.ValidResult;

    }

}


Para invocar a ValidationRule, llame al método UpdateSources. El siguiente ejemplo llama a UpdateSources cuando se produce el evento de clic del botón.


private void Button_Click(object sender, RoutedEventArgs e)
{
    sp1.BindingGroup.UpdateSources();
}


.NET Framework

Compatible con: 4, 3.5 SP1, 3.0 SP2

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Windows 7, Windows Vista SP1 o posterior, Windows XP SP3, Windows Server 2008 (no se admite Server Core), Windows Server 2008 R2 (se admite Server Core con SP1 o posterior), Windows Server 2003 SP2

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

date

Historial

Motivo

Septiembre de 2010

Se agrega un ejemplo más completo.

Comentarios de los clientes.

Mostrar: