我对 WPF 比较陌生,我偶然发现了一个我似乎无法找到解决方案的问题。
我确信已经有一个线程涉及这样的问题,但由于我缺乏知识,很可能我还没有找到它或根本不理解它。
我的问题:
我正在用 C# 开发 WPF 应用程序。这是一个 Outlook 风格的应用程序,带有一个带有巨大 ViewModel 和 XAML 的大型 MainWindow。我试图做的是将单个代码文件分开一点,使其更加模块化和紧凑。我正在使用 Telerik Controls 并尝试将单个 SplitContainers 的内容外包到 Pages 中,直到现在它都运行良好。
今天,出现了一个新情况,有点愚蠢,看起来也不太复杂,但不知何故我无法让它发挥作用。
情况:
我的“MainWindow”中有一个 Treeview,每当我更改其中的选择时,我都想更改已绑定到的页面上的属性。
因此,当我单击“TreeView_3”中的一个项目时,我想通过“Page_X”的 DataContext 上的 EventHandler (SelectionChanged_TreeView3) 设置一个属性。
如果我必须在 MainWindow 上执行此操作,我通常会这样做:
UserViewModel uvm = mainGrid.DataContext as UserViewModel;
然后只需调用我想要访问的特定 UserViewModel(MainWindow 的 ViewModel)的任何属性。
显然,我不能以相同的方式为页面执行此操作,因为“mainGrid.DataContext”将始终引用 MainWindow,因为这是调用 eventhandler 的地方。
所以我需要的是关于如何从具有不同 ViewModel 的页面访问 DataContext 的一些解释。
如果您需要任何代码来解释,请告诉我。
人到中年有点甜
紫衣仙女
相关分类