WPF将对象从一个控件传递到另一个控件

时间:2017-11-06 20:10:05

标签: c# wpf xaml binding

我试图在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已设置。

1 个答案:

答案 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'}" />