我有一个包含Canvas控件的UserControl(Map)。我正在从后面的代码中动态地向该画布添加一个控件(Gate)。
我希望Gate对象DataContext成为Map的DataContext的“Gate”属性。这是在后面的代码中完成的。
Binding dataContextBinding = new Binding();
dataContextBinding.RelativeSource = new RelativeSource(RelativeSourceMode.Self);
dataContextBinding.Path = new PropertyPath("DataContext.SelectedLevelModule.Gate");
dataContextBinding.Mode = BindingMode.TwoWay;
dataContextBinding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
BindingOperations.SetBinding(gate, DataContextProperty, dataContextBinding);
在运行此代码块之后,gate.DateContext为null ... 有什么办法可以做到吗?画一个空白.. 谢谢 哈罗德
答案 0 :(得分:0)
您正在将属性路径设置为DataContext.SelectedLevelModule.Gate
。然后,您将绑定分配给DataContextProperty
。我认为现在发生的是路径gate.DataContext.DataContext.SelectedLevelModule.Gate
。
尝试从PropertyPath
中删除DataContext,看看是否能修复它。您已经将它分配给DataContext,您不必在Path中指定它。
var dataContextBinding = new Binding();
dataContextBinding.Path = new PropertyPath("SelectedLevelModule.Gate");
BindingOperations.SetBinding(gate, DataContextProperty, dataContextBinding);