Sto provando ad aggiungere un PropertyChangedCallback a UIElement.RenderTransformOriginProperty. Un'eccezione viene generata quando provo a sovrascrivere PropertyMetadata.Come posso aggiungere la logica a un callback di proprietà di dipendenza esistente?
Ho cercato MSDN e Google, e tutto quello che sono riuscito a trovare è this. DependencyPropertyDescriptor.AddValueChanged è suggerito ad un certo punto in quel post, ma questo non risolverà il mio problema poiché questo non è un callback per istanza.
Non capisco cosa significhi questa eccezione. Qualcuno sa cosa sto sbagliando?
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);
}
}
Questo è perfetto! Grazie! Tendo ad ipotizzare che il framework non abbia intenzione di fare quel tipo di lavoro per me automaticamente. Immagino sia solo il rischio ocupazionale di essere un ingegnere di basso livello nell'era del dominio di alto livello ... – Giffyguy
Hehe, posso simpatizzare con quello. Ho passato innumerevoli ore a cercare di piegare WPF da una prospettiva di programmatore Win32 quando non riuscivo a elaborare la modalità WPF "cosher". –
Per quanto riguarda la tua modifica: Oh dang, questo mi butta via un po '- Ho bisogno di ascoltare le modifiche ad alcune proprietà di dipendenza FrameworkElement di sola lettura, come pure ... In questo caso, cosa suggeriresti? Davvero, DAVVERO, non voglio provare a implementarlo usando AddValueChanged su ogni istanza della mia classe. Anche se, immagino non mi dispiacerebbe, a patto che non abbia alcun impatto sulle prestazioni - rispetto a PropertyChangedCallback. Ahimè, questo deve essere efficiente, con tutti i mezzi. – Giffyguy