2010-12-15 41 views
1

任何人都可以回答一个真正令人沮丧的新手问题吗?!我一直在寻找答案几天&已找到类似问题的答案,但没有什么能完全解决我的问题。我试图绑定一个文本框到列表视图中的当前选定的项目(本身绑定到对象的Observablecollection,不知道这是否重要)。WPF - 如何绑定到不同页面的源代码?

listview位于RecentEntities.xaml &文本框位于Relationship.xaml中,两者都位于Maincontrol.xaml内的主窗口中。因此,它们位于同一个命名空间中,但它们位于不同的页面中,因此使用ElementName不起作用,因为这看起来似乎在当前页面中显示。

我遇到的问题是当试图在Relationship.xaml中定义文本框绑定的来源时,如何引用RecentEntities.xaml中的选定列表视图项目?我想知道如何使用RelativeSource,但是这似乎只能让你将树导航到当前控件的祖先。由于MainControl是如何设置的,我需要前往文本框的父级,然后到达父级的同级,然后到达其子级的孩子,以便进入列表视图!

我已经探索过(可能没有深入到)其他选项,如资源,数据上下文,包括头文件,并阅读了一些关于合并资源字典的内容,但老实说,我探索的可能性越大,我越困惑了解我需要做的事情。

这看起来真的很复杂吗?!任何指针或帮助将是辉煌的,谢谢你花时间回答:)我以前没有在这里发布过,所以如果你需要任何代码片段,请让我知道。

回答

2

你可以创建一个ViewModel,这两个视图将使用?让列表视图中的选定项绑定到ViewModel中的一个属性,并将该文本框绑定到相同的属性。只要这两个视图引用视图模型的同一个实例,它就可以工作。

0

对于两个XAML文件,您将不得不使用model或viewmodel(取决于您选择的体系结构)进行同步。

对于listview,你可以使用SelectedValue绑定到一个属性,使用Mode=OneWayToSource这个绑定,因为你只是想更新属性,而不是改变listview本身的选择。

+0

非常感谢您的答案!我对Viewmodel方法一无所知,但已经仔细研究了一下,这似乎是实现我需要的方法。现在的工作是弄清楚如何将所有的代码调整到这个模型中!再次感谢,你们都非常有帮助。 – iambic77 2010-12-17 10:33:46