我的 friend 们,
我在 WPF 中遇到一个我无法解决的问题。我有两个窗口,Mainwindow 和 Window1。我想将子窗口中的 ListView 绑定(bind)到父窗口中的控件属性。详细内容:
主窗口有一个在 XAML 中声明的控件,
<local:MyControl x:Name="View"/>
再往下,我有一个 Listview,它由“View”、“Session.Events”(Observable Collection)的公共(public)属性提供数据
<ListView ItemsSource="{Binding ElementName=View, Path=Session.Events}"/>
这工作正常,但现在我有第二个窗口以这种方式从主窗口生成:
Window1 MyWin1 = new Window1();
MyWin1.Owner = this;
MyWin1.ShowDialog();
第二个窗口有一个 ListView,它也需要由我的“View”控件提供。我想通过捆绑来做到这一点,但我咬掉了 dentry 。无论我尝试什么,它都不起作用。我确实有一个通过代码隐藏的工作版本...
Window1 Parent = (Window1)this.Owner;
MyListView.ItemsSource = Parent.CCView.Session.Events;
但我更喜欢在 XAML 中进行绑定(bind)并保存额外的代码。我也希望它能帮助我更好地理解绑定(bind),这对我来说在某种程度上仍然是一个谜。
非常感谢您并致以最诚挚的问候,
保罗
最佳答案
您可以跨 XAML 的逻辑树进行绑定(bind)。第二个窗口不是第一个窗口树的一部分。我认为在您的情况下最简单的方法应该是将 DataContext 传递到您的子窗口:
MyWin1 = new Window1 {
DataContext = this.DataContext,
Owner = this
};
MyWin1.ShowDialog();
关于c# - 如何绑定(bind)到所属窗口的控制属性(来自对话框窗口)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7569212/