从页面访问MainWindow的内容

时间:2012-08-04 10:18:29

标签: c# wpf ribbon

我使用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中的任何控件

1 个答案:

答案 0 :(得分:0)

您可以使用VisualTreeHelper.GetParent来获取MainWindow Type的Page的Visual Parent。
但请注意,通过正确的绑定,您不必直接访问控件。对于游标示例,您可以拥有ListViewIndex整数属性,此属性应该在更改时引发PropertyChanged,当您单击RibbonButton时,您只需更新ListViewIndex。 (在这种情况下,您可能希望还有一个readonly属性,给出列表中的项目数)。在包含listView的页面中,将SelectedIndex绑定到ListViewIndex,而不必使用代码访问控件。