Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > WPF и Silverlight > Проблемы с DependencyPropery в WPF


Автор: Anyone 30.7.2009, 13:30
Никак не могу разобраться как использовать 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 не вызываются!

В чем может быть проблема?


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)