BindingGroup.TryGetValue(Object, String, Object) 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
嘗試取得指定之屬性與項目的建議值。
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
。
範例
下列範例會建立名為 的 ValidateDateAndPrice
自訂 ValidationRule 。 Validate在 方法中,此範例會使用 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 呼叫 TryGetValue 的 ValidationStep 設定 RawProposedValue 為 。 ValidationRule如果 已將其 ValidationStep 設定為 ConvertedProposedValue ,則 的型 value
別是系結轉換子所傳回的任何類型。 在此範例中, value
通常是整數。