Никак не могу разобраться как использовать DependencyProperty с внутренними переменными класса. Насколько я понял, лучше всего внутренние переменные изменять (вызывать методы класса) в методе ScaleChanged, тоесть в PropertyChangedCallback (поправьте, если я не прав):
| Код | static UgeDrawingCanvas() { FrameworkPropertyMetadata metadataScale = new FrameworkPropertyMetadata(1.0, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault, new PropertyChangedCallback(ScaleChanged), new CoerceValueCallback(ScaleCoerce));
ScaleProperty = DependencyProperty.Register("Scale", typeof (double), typeof (UGEDrawingCanvas), metadataScale, new ValidateValueCallback(isScaleValid)); } private static object ScaleCoerce(DependencyObject d, object baseValue) { return baseValue; }
private static void ScaleChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { var canvas = d as UgeDrawingCanvas; if (canvas != null) { canvas.DefineRenderTransform(); } }
private void DefineRenderTransform() { _translateTransform=new TranslateTransform(Scale,Scale); }
private TranslateTransform _translateTransform;
|
Но дело в том, что ни ScaleCoerce, ни ScaleChanged не вызываются!
В чем может быть проблема?
|