设置动态创建的控件的Datacontext

时间:2015-04-08 21:38:07

标签: c# wpf

我有一个包含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 ... 有什么办法可以做到吗?画一个空白.. 谢谢 哈罗德

1 个答案:

答案 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);