Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Dependency Property Coercion binding issues

I have both VS2008 and VS2010 installed, and I see a very strange behavior

In VS2008, I have a simple WPF app:

<TextBox x:Name="textbox" Text="{Binding Path=MyProperty,Mode=TwoWay}"></TextBox>

and

public Window1()
{
    InitializeComponent();
    DataContext = this;
}
public string MyProperty
{
    get { return (string)GetValue(MyPropertyProperty); }
    set { SetValue(MyPropertyProperty, value); }
}
public static readonly DependencyProperty MyPropertyProperty = DependencyProperty.Register("MyProperty", typeof(string), typeof(Window1), new PropertyMetadata("default",null,Coerce));

private static object Coerce(DependencyObject d, object baseValue)
{
    return "Coerced Value";
}

When I enter random string in textbox and hit tab, I expect the textbox.Text to be reset to "Coerced Value". If I debug I see that the app breaks in the Coerce function but the UI is not updated.

Interestingly this same code works in VS2010, the UI gets updated with Coerced value. Anybody has an idea whats happening?

Is it a WPF bug? or am I missing something?

like image 445
Nitin Chaudhari Avatar asked Jun 09 '10 06:06

Nitin Chaudhari


1 Answers

You have to force an update via UpdateTarget(). Take a look at http://social.msdn.microsoft.com/forums/en-US/wpf/thread/c404360c-8e31-4a85-9762-0324ed8812ef/

like image 160
Daniel Rose Avatar answered Oct 23 '22 10:10

Daniel Rose