Multibinding을 사용하여 일부 속성을 바인딩하고 INotifyPropertyChanged 인터페이스를 사용하여 이러한 속성의 변경 사항을 알립니다.하지만 슬프게도 INotifyPropertyChanged가 작동하지 않는 것 같습니다. PropertyChangedEventHandler "PropertyChanged"는 항상 null입니다.INotifyPropertyChanged가 작동하지 않는 이유는 무엇입니까?
질문 :
A.이 PropertyChangedEventHandler을 이벤트가 null 인 이유를 말해 줄래 내 마음에서 이벤트에 대한 기본 방법이 있어야는, 내가 잘못
? (해결, 감사합니다!)B. 몇몇 친구들은 내가 ...을 INotifyPropertyChanged.But 대상의 속성의 값이 변경되지 않은 것으로 보인다 사용하지 않고 다시 시도 말한대로
PROPERT 이거
public static readonly DependencyProperty LeftOffsetProperty = DependencyProperty.Register("LeftOffset", typeof(double), typeof(NetworkTaskLable), new FrameworkPropertyMetadata(0d, FrameworkPropertyMetadataOptions.AffectsRender)); public static readonly DependencyProperty TopOffsetProperty = DependencyProperty.Register("TopOffset", typeof(double), typeof(NetworkTaskLable), new FrameworkPropertyMetadata(0d, FrameworkPropertyMetadataOptions.AffectsRender)); public double LeftOffset { get { return (double)GetValue(LeftOffsetProperty); } set { SetValue(LeftOffsetProperty, value); } } public double TopOffset { get { return (double)GetValue(TopOffsetProperty); } set { SetValue(TopOffsetProperty, value); } }
Multibinding는
public event PropertyChangedEventHandler PropertyChanged; public void CallPropertyChanged(string PropertyName) { if (PropertyChanged != null)//It seems to be null all the time!!!And the properties'changes were never notified!!! PropertyChanged(this, new PropertyChangedEventArgs(PropertyName)); }
을에서 INotifyPropertyChanged
("TopOffset"와 "LeftOffset"에 의해 영향을받는 위치를 계산하기 위해 변환기를 사용하여 well.By 작업 보인다)
변경 알림
SetValue(LeftOffsetProperty, moveAdorner.LeftOffset); CallPropertyChanged("LeftOffset"); SetValue(TopOffsetProperty, moveAdorner.TopOffset); CallPropertyChanged("TopOffset");
var multibinding = new MultiBinding() { Converter = new BeginAndStartDateToLeftConverter_NetworkTaskLable(), ConverterParameter = NetworkView };
multibinding.Bindings.Add(new Binding("Start"));
multibinding.Bindings.Add(new Binding("StartDate") { Source = NetworkView });
multibinding.Bindings.Add(new Binding("LeftOffset") { Source = this });
MainCanvas.SetBinding(LeftProperty, multibinding);
종속성 속성이 있지만이 인터페이스는 setter에서 함수 호출을 사용하는 공통 속성에 적용됩니다. – vorrtex
감사합니다, vorrtex.But 이유는 당신이 말한 것과 같지 않을 수 있습니다. 공용 속성을 알리려고했는데 이벤트가 여전히 null ... – Claw
Vorrtex는 Binding 엔진이 내부적으로 구현 된 종속성 속성 변경 사항을 수신한다는 것을 의미합니다. WPF에서. 따라서 PropertyChanged에 대한 핸들러가 없습니다. –