У меня есть и 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";
}
Когда я введу случайную строку в текстовое поле и поражаю вкладку, я ожидаю текстовое поле. Текст, который будет сброшен к "Принужденному Значению". Если я отлаживаю, я вижу, что приложение прерывает Принуждать функцию, но UI не обновляется.
Интересно этот тот же код работает в VS2010, UI обновляется с Принужденным значением. У кого-либо есть идея, что происходит?
Действительно ли это - ошибка WPF? или я пропускаю что-то?
Вы должны принудительно выполнить обновление через UpdateTarget ()
. Взгляните на http://social.msdn.microsoft.com/forums/en-US/wpf/thread/c404360c-8e31-4a85-9762-0324ed8812ef/