Привязка Привязки свойств собственности - PullRequest
8 голосов
/ 09 июня 2010

У меня установлены оба 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?или я что-то упустил?

1 Ответ

3 голосов
/ 09 июня 2010

Вы должны принудительно обновить через UpdateTarget().Взгляните на http://social.msdn.microsoft.com/forums/en-US/wpf/thread/c404360c-8e31-4a85-9762-0324ed8812ef/

...