OneWayToSource
Связывание кажется сломанным в .NET 4.0
У меня есть этот простой кусок Xaml
<StackPanel>
<TextBox Text="{Binding TextProperty, Mode=OneWayToSource}"/>
<Button/>
</StackPanel>
И мой код выглядит так:
public MainWindow()
{
InitializeComponent();
this.DataContext = this;
}
private string m_textProperty;
public string TextProperty
{
get
{
return "Should not be used in OneWayToSource Binding";
}
set
{
m_textProperty = value;
}
}
В .NET 3.5 это работает, как вы могли бы исключить. Поместите некоторый текст в TextBox
, нажмите Tab, чтобы потерять Focus, а TextProperty
обновляет любой текст, который был введен в TextBox
В .NET 4.0, если я наберу текст в TextBox
, а затем нажмите Tab, чтобы потерять Focus, TextBox
вернется к значению для TextProperty
(что означает "Нельзя использовать в привязке OneWayToSource" ). Это перечитывание предназначено для привязки OneWayToSource
в .NET 4.0? Я просто хочу, чтобы TextBox
нажал его значение в TextProperty
, а не наоборот.
Обновление
Добавление Bounty к этому вопросу, поскольку это стало неудобством мэра в моем проекте, и я хотел бы знать причину, по которой это изменилось. Кажется, что get
вызывается после того, как Binding обновил источник. Является ли это желаемым поведением для OneWayToSource
Binding в .NET 4.0?
Если Да
- В чем была проблема с тем, как он работал в версии 3.5?
- В каких сценариях это новое поведение лучше?
Или - это на самом деле ошибка, которую мы можем надеяться зафиксировать в будущей версии?