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" )