我试图在WPF中将一个控件中的对象传递给另一个控件。似乎我在视图中遇到了控件绑定的问题。
我目前有这个:
<controls:ConfigControl Grid.Column="0" x:Name="ConfigControl" />
<Label Content="{Binding ConfigControl.JobConfig.JDFPrinterFolder, FallbackValue='didnt work'}"></Label>
<ScrollViewer VerticalScrollBarVisibility="Auto" Grid.Column="1" >
<controls:MainControls Margin="0,10,0,0" Grid.RowSpan="2" JobConfig="{Binding ConfigControl.JobConfig}" />
</ScrollViewer>
我正在尝试将ConfigControl.JobConfig传递给我的MainControls并且我将标签添加到调试中,它总是导致&#34;没有工作&#34;。我不确定为什么它不能正常工作,但正确的方向上的一点会有所帮助。
在我的ConfigControl端我有一个名为JobConfig的公共对象:
public JobConfiguration JobConfig {
get { return _jobConfig; }
set {
_jobConfig = value;
// Call OnPropertyChanged whenever the property is updated
OnPropertyChanged("JobConfig");
}
}
它在ConfigControl的构造函数中填充:
public ConfigControl() {
InitializeComponent();
DataContext = this;
LoadSettings(); <--- here
}
我还调试了以确保那里的设置。
在我的MainControls里面我有这个:
public JobConfiguration JobConfig {
get { return (JobConfiguration)GetValue(JobConfigProperty); }
set { SetValue(JobConfigProperty, value); }
}
// Using a DependencyProperty as the backing store for JobConfig. This enables animation, styling, binding, etc...
public static readonly DependencyProperty JobConfigProperty =
DependencyProperty.Register("JobConfig", typeof(JobConfiguration), typeof(MainControls), new PropertyMetadata(null));
我已确认数据已在此处设置。一切都在ConfigControl视图中工作。是的我确认JDFPrinterFolder已设置。
答案 0 :(得分:0)
尝试使用ElementBinding。
<controls:MainControls Margin="0,10,0,0" Grid.RowSpan="2"
JobConfig="{Binding ElementName=ConfigControl,
Path=JobConfig}" />
<Label Content="{Binding ElementName=ConfigControl,
Path=JobConfig.JDFPrinterFolder,
FallbackValue='didnt work'}" />