Бөлісу құралы:


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

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

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

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 Если задано ConvertedProposedValueзначение ValidationStep , тип value любого типа, возвращаемого преобразователем привязки. В этом примере value обычно является целым числом.

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