NotifySourceUpdated和Binding.SourceUpdated无法正常工作

WPF*_*-it 1 c# data-binding wpf xaml

我的事件在下面(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>
Run Code Online (Sandbox Code Playgroud)

C#:

....
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
}
Run Code Online (Sandbox Code Playgroud)

我把所有的相关设置做过类似NotifyOnSourceUpdated&SourceUpdated&Binding.SourceUpdated等等.

Kla*_*s78 5

msdn:Binding.SourceUpdated附加事件发生在将值从绑定目标传输到绑定源时,但仅限于将NotifyOnSourceUpdated值设置为true的绑定

在TextBlock的绑定中,没有从绑定目标(TextBlock.Text)到绑定源(Side)的值传输.因此无法触发SourceUpdated.

而是可以在第一个绑定上触发SourceUpdated.实际上,目标绑定TextBox.Text可以改变绑定源(Side).