2011-09-08 48 views
2

我已经创建了一个Generic WPF控件,所以布局全部在代码中定义。这是所有罚款和我有添加绑定该工作第一次全面,例如:WPF UserControl在代码中创建,绑定不能使用INotifyPropertyChanged注册

private bool btEnabled { get { return SOME_LOGIC; } } 

Button bt = new Button { Content = "Button" }; 
bt.SetBinding(Button.IsEnabledProperty, new Binding { Source = btEnabled, Mode = BindingMode.OneWay }); 

每当有事情发生,影响btEnabled财产,我呼吁INotifyPropertyChanged的,但PropertyChanged事件总是空的,我不能工作了为什么绑定不注册PropertyChanged事件。

任何想法?

感谢

回答

1

我看到btEnabled是一个属性,太私人!

所以大概有两种错误......

Binding应该设置Path="btEnabled"Source=btEnabled 和你btEnabled属性应该是公共的。

+0

此外还需要一些源代码,所以最有可能的'Source'应该设置为'this'。 –

+0

@ H.B,不应该取消设置Source指示默认的DataContext?我们是否需要在代码后面明确设置它? –

+0

OP最初将Source设置为属性,因此推测该属性位于同一对象上,因此他/她可能不打算绑定到DataContext,而是绑定到当前对象,即this。如果当然DataContext已经设置为'this',那么就不需要了。 –