WPF TargetNullValue returning value when the textbox's binding is set to OneWayToSource

Martín Coll picture Martín Coll · Mar 1, 2011 · Viewed 7k times · Source

I have this xaml textbox

<TextBox Text="{Binding ProdFilter.Min, Mode=OneWayToSource,
   UpdateSourceTrigger=PropertyChanged, TargetNullValue=''}"
   Width="50" DockPanel.Dock="Right" TabIndex="3" />

binded to this this property:

        public double? Min
        {
            get { return min; }
            set
            {
                if (value == null)
                    value = 0;
                min = value;
                OnPropertyChanged("Min");
            }
        }

The problem I have is that when the program starts or when there user clears the text, the textbox's text is set to "0". I don't know if this behaviour is right, because i'm using OneWayToSource, but i'd like my property to be set to null when text is empty (and the text to remain empty!)

Any ideas? Thanks!

Answer

Pavlo Glazkov picture Pavlo Glazkov · Mar 1, 2011

This is because WPF re-reads the value from the property after it sets it even though the binding is OneWayToSource. Please see the answer to this question for possible workaround.