0

我用 MS 功能区菜单构建了一个 WPF 应用程序。在主功能区窗口上,我定义了一个显示不同页面的框架。到目前为止一切正常。当我尝试在嵌入页面中获取或设置任何值时,我会使用以下命令:

例如,当我单击 MainWindow 中的 RibbonButton 时,在列表视图中移动光标。

((Page_Rules)MainFrame.Content).lvwTemplates.Items.MoveCurrentToLast(); 

现在我尝试反之亦然,从页面类访问 MainWindow 中的某些内容:

((MainWindow)Content).RibbonWindow.Group_References.IsEnabled = false;

但是,这是行不通的。我收到以下异常

无法将“System.Windows.Controls.Grid”类型的对象转换为“MyApplication.MainWindow”类型

我想知道如何从我的任何嵌入式页面访问 MainWindow 中的任何控件

4

1 回答 1

0

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

于 2012-08-04T11:57:31.293 回答