У меня установлены оба VS2008 и VS2010, и я вижу очень странное поведение
В VS2008 у меня есть простое приложение WPF:
<TextBox x:Name="textbox" Text="{Binding Path=MyProperty,Mode=TwoWay}"></TextBox>
и
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";
}
Когда я ввожу произвольную строку в текстовое поле и нажимаю вкладку, я ожидаю, что textbox.Text будет сброшен на «Принудительное значение».Если я отлаживаю, я вижу, что приложение разрывается в функции Coerce, но пользовательский интерфейс не обновляется.
Интересно, что этот же код работает в VS2010, пользовательский интерфейс обновляется со значением Coerced.У кого-нибудь есть идея, что происходит?
Это ошибка WPF?или я что-то упустил?