C# (二);Binding.SourceUpdated不工作
我下面的事件(C# (二);Binding.SourceUpdated不工作,c#,wpf,xaml,data-binding,C#,Wpf,Xaml,Data Binding,我下面的事件(OnSourceUpdated)未得到处理 XAML: <StackPanel x:Name="MyStackPanel" Orientation="Horizontal" DockPanel.Dock="Top"> <TextBox Text="{Binding Side, Mode=TwoWay}" Width="100"/>
OnSourceUpdated
)未得到处理
XAML:
<StackPanel x:Name="MyStackPanel"
Orientation="Horizontal"
DockPanel.Dock="Top">
<TextBox Text="{Binding Side, Mode=TwoWay}"
Width="100"/>
<TextBlock Background="Yellow"
Text="{Binding Side, Mode=OneWay,
NotifyOnSourceUpdated=True}"
Width="100"
SourceUpdated="OnSourceUpdated"
Binding.SourceUpdated="OnSourceUpdated"/>
</StackPanel>
....
MyStackPanel.DataContext = new MyItemClass() { Side = "Test" };
....
private void OnSourceUpdated(Object sender, DataTransferEventArgs args)
{
var i = args.Property;
}
public class MyItemClass : INotifyPropertyChanged
{
private string _side;
public string Side
{
get { return _side; }
set
{
_side = value;
OnPropertyChanged("Side");
}
}
#region INotifyPropertyChanged Members
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string propertyName)
{
if (this.PropertyChanged != null)
{
this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
#endregion
}
我已经完成了所有相关设置,如
NotifyOnSourceUpdated
&SourceUpdated
&绑定。SourceUpdated
等。也许我遗漏了一些东西,但我觉得你的更新方法有点奇怪。你为什么不跟我一起去
<TextBlock Text="{Binding foo, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" ... />
涵盖其余部分。来自:绑定。当值从绑定目标传输到绑定源时,会发生SourceUpdated附加事件,但仅适用于NotifyOnSourceUpdated值设置为true的绑定
在TextBlock的绑定中,没有从绑定目标(TextBlock.Text
)到绑定源(Side
)的值传输。因此,无法激发SourceUpdate
相反,可以在第一个绑定上激发SourceUpdate。实际上,在这里,目标绑定
TextBox.Text
可以更改绑定源(端
)。是的。知道了。因此,我在TextBox
中添加了NotifyTargetUpdated
,并在StackPanel
级别处理了Binding.SourceUpdated=“OnSourceUpdated”
。所以它成功了!
OnPropertyChanged( "PropertyName" )