我的朋友,
我在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中进行绑定并保存额外的代码。我希望它能帮助我更好地理解绑定,这对我来说在某种程度上仍然是一个谜。
非常感谢和我最诚挚的问候,
保罗
答案 0 :(得分:2)
您可以跨XAML的逻辑树进行绑定。第二个窗口不是第一个窗口树的一部分。我认为在你的情况下最简单的方法应该是将DataContext传递给你的子窗口:
MyWin1 = new Window1 {
DataContext = this.DataContext,
Owner = this
};
MyWin1.ShowDialog();