BindingGroup.TryGetValue(Object, String, Object) Método

Definición

Intenta obtener el valor propuesto para la propiedad y elemento especificados.

public:
 bool TryGetValue(System::Object ^ item, System::String ^ propertyName, [Runtime::InteropServices::Out] System::Object ^ % value);
public bool TryGetValue (object item, string propertyName, out object value);
member this.TryGetValue : obj * string * obj -> bool
Public Function TryGetValue (item As Object, propertyName As String, ByRef value As Object) As Boolean

Parámetros

item
Object

Objeto que contiene la propiedad especificada.

propertyName
String

Propiedad cuyo valor propuesto se va a obtener.

value
Object

El resultado que devuelva este método contendrá un objeto que representará el valor de propiedad propuesto. Este parámetro se pasa sin inicializar.

Devoluciones

Boolean

Es true si el valor es el valor propuesto para la propiedad especificada; de lo contrario, es false.

Ejemplos

En el ejemplo siguiente se crea un personalizado ValidationRule denominado ValidateDateAndPrice. En el método , en el Validate ejemplo se usa el TryGetValue método y la Items propiedad para obtener los valores especificados por el usuario en el formulario. A continuación, el ejemplo comprueba que si un elemento tiene más de 100 dólares, estará disponible durante al menos siete días. Este ejemplo forma parte de un ejemplo más grande en la BindingGroup clase .

public class ValidateDateAndPrice : ValidationRule
{
    // Ensure that an item over $100 is available for at least 7 days.
    public override ValidationResult Validate(object value, CultureInfo cultureInfo)
    {
        BindingGroup bg = value as BindingGroup;

        // Get the source object.
        PurchaseItem item = bg.Items[0] as PurchaseItem;
        
        object doubleValue;
        object dateTimeValue;

        // Get the proposed values for Price and OfferExpires.
        bool priceResult = bg.TryGetValue(item, "Price", out doubleValue);
        bool dateResult = bg.TryGetValue(item, "OfferExpires", out dateTimeValue);

        if (!priceResult || !dateResult)
        {
            return new ValidationResult(false, "Properties not found");
        }

        double price = (double)doubleValue;
        DateTime offerExpires = (DateTime)dateTimeValue;

        // Check that an item over $100 is available for at least 7 days.
        if (price > 100)
        {
            if (offerExpires < DateTime.Today + new TimeSpan(7, 0, 0, 0))
            {
                return new ValidationResult(false, "Items over $100 must be available for at least 7 days.");
            }
        }

        return ValidationResult.ValidResult;
    }
}
Public Class ValidateDateAndPrice
    Inherits ValidationRule
    ' Ensure that an item over $100 is available for at least 7 days.
    Public Overrides Function Validate(ByVal value As Object, ByVal cultureInfo As CultureInfo) As ValidationResult
        Dim bg As BindingGroup = TryCast(value, BindingGroup)

        ' Get the source object.
        Dim item As PurchaseItem = TryCast(bg.Items(0), PurchaseItem)

        Dim doubleValue As Object = Nothing
        Dim dateTimeValue As Object = Nothing

        ' Get the proposed values for Price and OfferExpires.
        Dim priceResult As Boolean = bg.TryGetValue(item, "Price", doubleValue)
        Dim dateResult As Boolean = bg.TryGetValue(item, "OfferExpires", dateTimeValue)

        If (Not priceResult) OrElse (Not dateResult) Then
            Return New ValidationResult(False, "Properties not found")
        End If

        Dim price As Double = CDbl(doubleValue)
        Dim offerExpires As Date = CDate(dateTimeValue)

        ' Check that an item over $100 is available for at least 7 days.
        If price > 100 Then
            If offerExpires < Date.Today + New TimeSpan(7, 0, 0, 0) Then
                Return New ValidationResult(False, "Items over $100 must be available for at least 7 days.")
            End If
        End If

        Return ValidationResult.ValidResult

    End Function
End Class

Comentarios

TryGetValue devuelve false si no hay un enlace para el elemento y la propiedad especificados o si el valor de la propiedad especificada no está disponible, debido a un error de conversión o porque se produjo un error en una regla de validación anterior.

Use este método en el ValidationRule.Validate método para obtener el valor que se va a confirmar en el origen. El tipo value depende de la fase en la que se produce .ValidationRule Por ejemplo, si un TextBox es datos enlazados a una propiedad de tipo entero, value es una cadena si el ValidationRule objeto que llama TryGetValue tiene establecido RawProposedValueen ValidationStep . ValidationRule Si tiene establecido en ValidationStep ConvertedProposedValue, el tipo de value es cualquier tipo devuelto por el convertidor del enlace. En este ejemplo, value suele ser un entero.

Se aplica a