我使用MS Ribbon Menu构建WPF应用程序。 在主功能区窗口中,我定义了一个显示不同页面的框架。 到目前为止一切正常。 当我尝试在embeeded页面中获取或设置任何值时,我使用以下命令:
示例,当我单击MainWindow中的RibbonButton时,在列表视图中移动光标。
((Page_Rules)MainFrame.Content).lvwTemplates.Items.MoveCurrentToLast();
现在我尝试反之亦然,从页面类访问MainWindow中的内容:
((MainWindow)Content).RibbonWindow.Group_References.IsEnabled = false;
但是,这不起作用。我收到了以下异常
无法将类型为“System.Windows.Controls.Grid”的对象强制转换为类型 'MyApplication.MainWindow'
我想知道如何从任何嵌入式页面访问MainWindow中的任何控件
答案 0 :(得分:0)
您可以使用VisualTreeHelper.GetParent来获取MainWindow Type的Page的Visual Parent。
但请注意,通过正确的绑定,您不必直接访问控件。对于游标示例,您可以拥有ListViewIndex整数属性,此属性应该在更改时引发PropertyChanged,当您单击RibbonButton时,您只需更新ListViewIndex。 (在这种情况下,您可能希望还有一个readonly属性,给出列表中的项目数)。在包含listView的页面中,将SelectedIndex绑定到ListViewIndex,而不必使用代码访问控件。