C# 设置动态创建的控件的Datacontext
我有一个包含画布控件的UserControl(Map)。我正在从代码隐藏处动态地向画布添加一个控件(门)C# 设置动态创建的控件的Datacontext,c#,wpf,C#,Wpf,我有一个包含画布控件的UserControl(Map)。我正在从代码隐藏处动态地向画布添加一个控件(门) Binding dataContextBinding = new Binding(); dataContextBinding.RelativeSource = new RelativeSource(RelativeSourceMode.Self); dataContextBinding.Path = new PropertyPath("DataContext
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对象DataContext是映射的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。。。
有什么方法可以做到这一点吗?画空白。。
谢谢
Harold您正在将属性路径设置为
DataContext.SelectedLevelModule.Gate
。然后将绑定分配给DataContextProperty
。我认为现在的路径是gate.DataContext.DataContext.SelectedLevelModule.gate
尝试从属性路径中删除DataContext,看看是否可以修复它。您已经将其分配给DataContext,不必在路径中指定它
var dataContextBinding = new Binding();
dataContextBinding.Path = new PropertyPath("SelectedLevelModule.Gate");
BindingOperations.SetBinding(gate, DataContextProperty, dataContextBinding);