我用一个Multibinding来绑定一些属性,并使用INotifyPropertyChanged接口来通知这些属性的变化。但令人遗憾的是,似乎INotifyPropertyChanged不起作用。 PropertyChangedEventHandler“PropertyChanged”始终为空。为什么INotifyPropertyChanged不起作用?
问题:?
A.你能告诉我,为什么事件是空在我的印象中,应该是事件的默认方法PropertyChangedEventHandler,我错了
?(已解决,谢谢!)B.就像一些朋友说,我再次尝试不使用INotifyPropertyChanged.But目标的属性值似乎没有改变......
PROPERT IES
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(好像用转换器用以计算由 “TopOffset” 和 “左偏移” 影响了地方工作well.By)
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);
INotifyPropertyChanged的
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)); }
通知变更
SetValue(LeftOffsetProperty, moveAdorner.LeftOffset); CallPropertyChanged("LeftOffset"); SetValue(TopOffsetProperty, moveAdorner.TopOffset); CallPropertyChanged("TopOffset");
你有依赖属性,但是这个接口被应用于通过setter中的函数调用的公共属性。 – vorrtex 2011-02-14 08:23:56
谢谢你,vorrtex.But原因可能不会像你说的。我试图通知一个共同的属性,事件仍然为空... – Claw 2011-02-14 08:35:34
Vorrtex意味着在你的情况下,绑定引擎监听依赖属性的变化在WPF中。所以没有PropertyChanged的处理程序。 – 2011-02-14 08:49:17