Exportar (0) Imprimir
Expandir todo
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

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 usar una regla 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.5, 4, 3.5 SP1, 3.0 SP2

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)

.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.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft