如何绑定到拥有窗口的控件属性(从对话框窗口)?

时间:2011-09-27 12:36:07

标签: c# wpf xaml data-binding

我的朋友,

我在WPF中遇到了一个我无法解决的问题。我有两个Windows, Mainwindow Window1 。我想将我的子窗口中的ListView绑定到父窗口中的控件属性。详细说明:

Mainwindow有一个在XAML中声明的控件,

<local:MyControl x:Name="View"/>

再往下我有一个Listview,它被'View','Session.Events'(Observable Collection)的公共财产所支持

<ListView ItemsSource="{Binding ElementName=View, Path=Session.Events}"/>

哪种方法很好,但现在我有了第二个以Mainwindow方式生成的Window:

Window1 MyWin1 = new Window1();
MyWin1.Owner = this;
MyWin1.ShowDialog();

第二个窗口有一个ListView,它也需要由我的'View'控件提供。我想通过绑定来做到这一点,但我咬牙切齿。无论我尝试什么,它都行不通。我通过代码隐藏确实有一个工作版本......

Window1 Parent = (Window1)this.Owner;
MyListView.ItemsSource = Parent.CCView.Session.Events;

但我更喜欢在XAML中进行绑定并保存额外的代码。我希望它能帮助我更好地理解绑定,这对我来说在某种程度上仍然是一个谜。

非常感谢和我最诚挚的问候,
保罗

1 个答案:

答案 0 :(得分:2)

您可以跨XAML的逻辑树进行绑定。第二个窗口不是第一个窗口树的一部分。我认为在你的情况下最简单的方法应该是将DataContext传递给你的子窗口:

MyWin1 = new Window1 {
  DataContext = this.DataContext,
  Owner = this 
};
MyWin1.ShowDialog();