CoerceValueCallback CoerceValueCallback CoerceValueCallback CoerceValueCallback Delegate

정의

종속성 속성 값이 다시 계산되거나 강제 형 변환이 특별히 요청될 때마다 호출되는 메서드에 대한 템플릿을 제공합니다.Provides a template for a method that is called whenever a dependency property value is being re-evaluated, or coercion is specifically requested.

public delegate System::Object ^ CoerceValueCallback(DependencyObject ^ d, System::Object ^ baseValue);
public delegate object CoerceValueCallback(DependencyObject d, object baseValue);
type CoerceValueCallback = delegate of DependencyObject * obj -> obj
Public Delegate Function CoerceValueCallback(d As DependencyObject, baseValue As Object) As Object 

매개 변수

d
DependencyObject DependencyObject DependencyObject DependencyObject

속성이 있는 개체입니다.The object that the property exists on. 이 값은 콜백이 호출될 때 속성 시스템에서 전달합니다.When the callback is invoked, the property system will pass this value.

baseValue
Object Object Object Object

속성의 새 값입니다(강제 형 변환을 시도하기 전).The new value of the property, prior to any coercion attempt.

반환 값

System.Object

적절한 형식을 사용하여 강제 변환된 값입니다.The coerced value (with appropriate type).

상속
CoerceValueCallbackCoerceValueCallbackCoerceValueCallbackCoerceValueCallback

예제

다음 예제에서는이 콜백은 다른 속성의 값과 같은 다른 입력을 기준으로 종속성 속성의 저장 된 값을 강제 변환의 구현이 포함 되어 있습니다.The following example includes an implementation of this callback to coerce the stored value of a dependency property based on other inputs, such as another property's value. 콜백을 확인 하는 예제의 경우 여부를 ShirtType 속성 형식에 해당 하는 단추가 있는 shirt의; 그렇다면 시작 기본 색을 설정 합니다 ButtonColor, 강제 변환 shirt 형식 단추가 없습니다 있으면는 ButtonColor 값 그러면 다시 시작 값으로는 UIUI (표시 되지 않음) 유효한 선택 항목에서 해당 드롭다운을 제거 하려면.In this case, the callback checks to see whether the ShirtType property corresponds to a type of shirt that has buttons; if so it establishes a starting default color for the ButtonColor, if the shirt type has no buttons, it coerces the ButtonColor value back to a starting value, which causes the UIUI (not shown) to remove that dropdown from the effective choices.

private static object CoerceButtonColor(DependencyObject d, object value)
{
	ShirtTypes newShirtType = (d as Shirt).ShirtType;
	if (newShirtType == ShirtTypes.Dress || newShirtType == ShirtTypes.Bowling)
	{
		return ButtonColors.Black;				
	}
	return ButtonColors.None;
}
Private Shared Function CoerceButtonColor(ByVal d As DependencyObject, ByVal value As Object) As Object
	Dim newShirtType As ShirtTypes = (TryCast(d, Shirt)).ShirtType
	If newShirtType = ShirtTypes.Dress OrElse newShirtType = ShirtTypes.Bowling Then
		Return ButtonColors.Black
	End If
	Return ButtonColors.None
End Function

설명

콜백 기반 CoerceValueCallback 다양 한 기술을 통해 종속성 속성에 할당할 수 있습니다.Callbacks based on CoerceValueCallback can be assigned to a dependency property through several different techniques. 이러한 각 기법에서는 먼저 만들어야 새 속성 메타 데이터 개체 (PropertyMetadata, 또는와 같은 파생된 클래스 FrameworkPropertyMetadata).Each of these techniques requires that you first create a new property metadata object (PropertyMetadata, or a derived class such as FrameworkPropertyMetadata). 받아들이는 생성자 시그니처를 사용 하는 메타 데이터 개체 만들기는 coerceValueCallback 매개 변수를 콜백 처리기에 해당 매개 변수를 할당 합니다.Create the metadata object using a constructor signature that takes the coerceValueCallback parameter, and assign that parameter to your callback handler. 모든 서명 및 집합에서 메타 데이터를 생성 또는 CoerceValueCallback 사용에서 메타 데이터를 설정 하기 전에 속성입니다.Or construct the metadata by any signature and set the CoerceValueCallback property prior to putting the metadata in use.

이 메타 데이터에 있는 경우에 다음을 수행할 수 있습니다.When you have this metadata, you can:

이 콜백 구현 값을 확인 해야 baseValue 확인 및 추가 강제 해야 하는 값이 인지 값 또는 형식에 기반 합니다.Implementations of this callback should check the value in baseValue and determine based on either the value or the type whether this is a value that needs to be further coerced.

CoerceValueCallback 속성은 속성 시스템 또는 다른 호출자를 호출 하는 모든 시간을 호출 하는 데 종속성에 대 한 CoerceValueDependencyObject 인스턴스를 해당 속성의 식별자를 지정 하는 dp합니다.The CoerceValueCallback for a dependency property is invoked any time that the property system or any other caller calls CoerceValue on a DependencyObject instance, specifying that property's identifier as the dp.

속성 값을 변경 하는 속성 시스템의 가능한 참가자에서 가져왔을 수입니다.Changes to the property value may have come from any possible participant in the property system. 스타일, 제네릭 무효화, 트리거, 속성 값 상속 및 로컬 값 설정이 포함 됩니다.This includes styles, generic invalidation, triggers, property value inheritance, and local value setting.

일반적으로 지정 해서는 둘 이상의 CoerceValueCallback 지정 된 종속성 속성에 대 한 (재정의 또는 이미 있는 종속성 속성에 대 한 새 메타 데이터를 사용 하 여 추가 CoerceValueCallback).Generally you should avoid specifying more than one CoerceValueCallback for any given dependency property (overriding or adding with new metadata for a dependency property that already had a CoerceValueCallback). 콜백 중 하나에만 영향을 줄 수 됩니다. 동작 콜백 수와 비교할 상속의 가장 많이 파생 된 클래스에 적용 된 것을 DependencyObject 호출자입니다.Only one of the callbacks will be able to act. The acting callback will be the one that was applied to the most derived class in the inheritance as compared to the DependencyObject caller. 소유자 계층에 더 높은 존재 종속성 속성에 대 한 메타 데이터에 할당 된 다른 콜백은 메타 데이터를 재정의할 때 대체 됩니다.Other callbacks as assigned to metadata for the dependency property as it existed higher in the owner hierarchy are replaced when the metadata is overridden.

확장 메서드

GetMethodInfo(Delegate) GetMethodInfo(Delegate) GetMethodInfo(Delegate) GetMethodInfo(Delegate)

지정된 대리자가 나타내는 메서드를 나타내는 개체를 가져옵니다.Gets an object that represents the method represented by the specified delegate.

적용 대상

추가 정보