PropertyChangedCallback を UIElement.RenderTransformOriginProperty に追加しようとしています。PropertyMetadata をオーバーライドしようとすると、例外がスローされます。
MSDN と Google を検索しましたが、思いついたのはこれだけです。DependencyPropertyDescriptor.AddValueChanged は、その投稿のある時点で提案されていますが、これはインスタンスごとのコールバックではないため、私の問題は解決しません。
この例外の意味がまったくわかりません。私が間違っていることを誰かが知っていますか?
public class foo : FrameworkElement
{
private static void Origin_Changed( DependencyObject d,
DependencyPropertyChangedEventArgs e)
{ }
static foo()
{
PropertyMetadata OriginalMetaData =
UIElement.RenderTransformOriginProperty.GetMetadata(
typeof(FrameworkElement));
/*An exception is thrown when this line is executed:
"Cannot change property metadata after it has been associated with a property"*/
OriginalMetaData.PropertyChangedCallback +=
new PropertyChangedCallback(Origin_Changed);
UIElement.RenderTransformOriginProperty.OverrideMetadata(
typeof(foo), OriginalMetaData);
}
}