Dependency Property Coercion binding issues

怎甘沉沦 提交于 2019-12-01 01:47:29

问题


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?


回答1:


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/



来源:https://stackoverflow.com/questions/3003546/dependency-property-coercion-binding-issues

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!