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

範例

下列範例會建立名為 的 ValidateDateAndPrice 自訂 ValidationRuleValidate在 方法中,此範例會使用 TryGetValue 方法和 Items 屬性,以取得使用者輸入表單的值。 然後,此範例會檢查某個專案是否超過 100 美元,至少 7 天即可使用。 這個範例是 類別上較大範例的 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

備註

TryGetValuefalse如果指定的專案和屬性沒有系結,或因為轉換錯誤或先前的驗證規則失敗而無法使用指定屬性的值,則會傳回 。

在 方法中使用 ValidationRule.Validate 此方法,以取得要認可至來源的值。 此類型 value 取決於 發生的階段 ValidationRule 。 例如,如果 TextBox 是系結至整數類型的屬性的資料,則為字串, value 如果 ValidationRule 呼叫 TryGetValueValidationStep 設定 RawProposedValue 為 。 ValidationRule如果 已將其 ValidationStep 設定為 ConvertedProposedValue ,則 的型 value 別是系結轉換子所傳回的任何類型。 在此範例中, value 通常是整數。

適用於