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このメソッドでは、メソッドとプロパティをTryGetValueItems使用して、ユーザーがフォームに入力した値を取得します。 次に、アイテムが 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
注釈
TryGetValue は、 false
指定した項目とプロパティのバインドがない場合、または変換エラーまたは以前の検証規則が失敗したために、指定したプロパティの値が使用できない場合に返されます。
ソースにコミットする値を ValidationRule.Validate 取得するには、メソッドでこのメソッドを使用します。 型 value
は、発生する ValidationRule ステージによって異なります。 たとえば、a TextBox が整数型のプロパティにバインドされたデータの場合、value
その呼び出しTryGetValueの設定RawProposedValueが の場合ValidationRuleはValidationStep文字列です。 にValidationRuleValidationStep設定ConvertedProposedValueされている場合、型はバインディングのvalue
コンバーターによって返される任意の型です。 この例では、 value
通常は整数です。