DependencyProperties: PropertyChangedCallBack only called once
c#, data-binding, events, silverlight, windows-phone-7
Solution
You set the property Value on the callback for the property Value changing. That doesn't make much sense in any case. But is that locally set value overriding the binding value, causing your binding to no longer be set on the dependency property?
Problem
I created a control, derived from `Canvas`, that should plot a live diagram, given values that are passed via a binding to a DependencyProperty. The simplified version is this: ``` public class Plotter : Canvas { public float Value { get { return (float)GetValue(ValueProperty); } set { SetValue(ValueProperty, value); } } public static readonly DependencyProperty ValueProperty = DependencyProperty.Register("Value", typeof(float), typeof(Plotter), new PropertyMetadata(0f, new PropertyChangedCallback(ValueChangedCallBack))); public static void ValueChangedCallBack(DependencyObject property, DependencyPropertyChangedEventArgs args) { Plotter plotter = (Plotter)property; plotter.Value = (float)args.NewValue; //<-- Removed this line to get it to work // Actually draw the value into the canvas geometry plotter.PlotValue(plotter.Value); } } ``` I bound the control like this: ``` <mystuff:Plotter Value="{Binding MyViewModelProperty}" Height="50" Width="200" /> ``` My ViewModel implements `INotifyPropertyChanged` and calls `PropertyChanged` correctly. If I bind `MyViewModelProperty` to a textbox, it correctly updates every time. Only if I bind it to my own control, my `ValueChangedCallBack` is only called once as the page is loaded, and then never again. What am I not seeing here? Thanks for any help! Solved: I dont have to set the `Value` explicitly in the callback.