知道什么时候“数据上下文”是在UserControl后面的代码中更改的
本文关键字:代码 UserControl 是在 什么时候 数据 上下文 数据上下文 | 更新日期: 2023-09-27 18:16:10
我正在为lightswitch创建一个用户控件。这基本上是一个Silverlight用户控件,它接收"DataContext"属性上的businessObject。
我可以绑定在xaml侧项没有问题,但在后面的代码,我不知道如何得到通知时,dataContext已经改变?
我需要一个特殊的绑定。
非常感谢!
您可以扩展控制类(在您的情况下是UserControl
)并添加新的DependencyProperty
包装DataContext
以暴露PropertyChanged
。看看这三篇文章和这个问题。或者,根据您要做的事情,您可能真的不需要听DataContextChanged
,因为它可能更适合处理模型中的更改。
最后,如果你有耐心和选择,我听说SL 5暴露了DataContextChanged
。
恐怕你不能再次设置静态只读字段,除非你使用"new"。
您可能能够捕获通过数据绑定到DataContext依赖属性更改的DataContext。例如,注册一个新的dp名为"MyDataContext",并创建一个绑定。
DataContext是绑定源,MyDataContext是绑定目标,即DataContext -> MyDataContext。每次DataContext你都会得到MyDataContext dp changed callback。我认为这将工作,但没有测试。
代码如下:
// dp declaration..
public static readonly DependencyProperty MyDataContextProperty = DependencyProperty.Register(null, "MyDataContext", typeof(object), typeof(MyControl), new PropertyMetadata(MyDataContextChangedCallback));
// create binding in constructor or initialization.
Binding binding = new Binding("DataContext");
BindingOperations.SetBinding(this, MyDataContextProperty, binding);
谢谢