OneWayToSource
Binding seems broken in .NET 4.0
I have this simple piece of Xaml
<StackPanel>
<TextBox Text="{Binding TextProperty, Mode=OneWayToSource}"/>
<Button/>
</StackPanel>
And my code behind looks like this
public MainWindow()
{
InitializeComponent();
this.DataContext = this;
}
private string m_textProperty;
public string TextProperty
{
get
{
return "Should not be used in OneWayToSource Binding";
}
set
{
m_textProperty = value;
}
}
In .NET 3.5 this works as you might except. Put some text in the TextBox
, press Tab to make it lose Focus, and the TextProperty
updates with whatever text that was entered in the TextBox
In .NET 4.0, if I type some text in the TextBox
and then press Tab to make it lose Focus, the TextBox
reverts to the value for TextProperty
(meaning "Should not be used in OneWayToSource Binding"). Is this re-reading intended for a OneWayToSource
Binding in .NET 4.0? I just want the TextBox
to push its value into the TextProperty
and not the other way around.
Update
Adding a Bounty to this question as this has become a mayor inconvenience in my project and I would like to know the reason that this has changed. It seems that get
is called after the Binding has updated the source. Is this the desired behavior for a OneWayToSource
Binding in .NET 4.0?
If Yes
- What was the problem with the way it worked in 3.5?
- In what scenarios is this new behavior better?
Or is this in fact a bug that we can hope to get fixed in a future release?