BindingGroup.TryGetValue(Object, String, Object) Метод

Определение

Пытается получить предложенное значение для заданного свойства и элемента.

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

Параметры

item
Object

Объект, содержащий заданное свойство.

propertyName
String

Свойство, предложенное значение которого требуется получить.

value
Object

При возвращении из данного метода содержит объект, представляющий предложенное значение свойства. Этот параметр передается неинициализированным.

Возвращаемое значение

Boolean

true, если значение является предложенным значением для заданного свойства; в противном случае — false.

Примеры

В следующем примере создается пользовательский именованный ValidationRule ValidateDateAndPriceобъект . Validate В этом примере используется TryGetValue метод и Items свойство для получения значений, введенных пользователем в форму. Затем в примере проверяется, что если элемент превышает 100 долларов, он будет доступен по крайней мере семь дней. Этот пример является частью более крупного примера в BindingGroup классе

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

Комментарии

TryGetValue Возвращает значение false , если привязка для указанного элемента и свойства отсутствует или если значение указанного свойства недоступно из-за ошибки преобразования или из-за сбоя предыдущего правила проверки.

Используйте этот метод в методе ValidationRule.Validate , чтобы получить значение, которое будет зафиксировано в источнике. Тип value зависит от этапа, на котором происходит.ValidationRule Например, если данные TextBox привязаны к свойству целого числа типа, это строка, value если для ValidationRule вызова TryGetValue задано значение ValidationStep RawProposedValue. ValidationRule Если задано значение ValidationStep ConvertedProposedValue, тип value является любым типом, возвращаемым преобразователем привязки. В этом примере value обычно является целым числом.

Применяется к