BindingGroup.Items Właściwość

Definicja

Pobiera źródła, które są używane przez obiekty Powiązania w obiekcie BindingGroup.

C#
public System.Collections.IList Items { get; }

Wartość właściwości

IList

Źródła, które są używane przez obiekty Powiązania w obiekcie BindingGroup.

Przykłady

Poniższe przykłady są częścią aplikacji, która sprawdza, czy użytkownik ustawił właściwości dwóch obiektów na równe wartości. Pierwszy przykład tworzy dwie TextBox kontrolki, z których każda jest powiązana z innym źródłem. Powiązanie pierwszego TextBox pobiera źródło , object1z DataContext elementu nadrzędnego TextBox kontrolki ().StackPanel W drugim TextBoxobiekcie źródło powiązania jest ustawione na object2wartość . W przykładzie zostanie również utworzony obiekt Label , który wyświetla błędy weryfikacji.

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

W poniższym przykładzie pokazano ValidationRule , że w poprzednim przykładzie użyto. W metodzie Validate przykład pobiera każdy obiekt źródłowy z obiektu BindingGroup i sprawdza, czy właściwości obiektów są równe.

C#
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;
    }
}

Uwagi

Każdy obiekt używany jako źródło jest dodawany do Items właściwości raz, nawet jeśli obiekt jest używany jako źródło dla wielu powiązań. Często istnieje tylko jeden element w Itemselemencie , który jest obiektem, który jest DataContext elementem, który używa BindingGroupelementu . Istnieje jednak możliwość BindingGroup posiadania wielu źródeł. Jeśli na przykład obiekty powiązania mają taki sam udział BindingGroupName , ale używają różnych obiektów źródłowych, każdy obiekt, który jest używany jako źródło, znajduje się w Itemsobiekcie .

Istnieje również wiele obiektów, Items jeśli ścieżka powiązania jest rozpoznawana jako zagnieżdżona właściwość źródła. Załóżmy na przykład, że TextBox powiązanie kontrolki jest częścią BindingGroup obiektu i jest obiektem DataContext Customer , który ma właściwość typu Address. Path Binding Jeśli właściwość jest właściwościąAddress.ZipCode, Address właściwość jest dodawana do Items właściwości .

Dotyczy

Produkt Wersje
.NET Framework 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
Windows Desktop 3.0, 3.1, 5, 6, 7