【问题标题】:Access calling page controls from window in WPF从 WPF 中的窗口访问调用页面控件
【发布时间】:2011-05-24 17:21:59
【问题描述】:

我创建了 WPF 浏览器应用程序并添加了页面和窗口。单击页面中的按钮时,它会打开带有 DataGrid 中详细信息列表的窗口。我想将 Window 的 DataGrid 中的值分配给 Page Controls。

在Window code behind (Window1.xaml.cs)中使用以下代码将值不分配给Page控件

private void DataGrid1_MouseDoubleClick(object sender, MouseButtonEventArgs e) 
{ 
 Page1 page = new Page1(); 
 page.txtName.Text = "GridValue1";
 this.Close(); 
}

当我双击时,来自 Wiindow1 Datagrid 的值应该分配给 Page1 的控件。我没有获得正确的页面对象来为 txtName.text 分配 Window1 的 DataGrid 值。

非常感谢提前...

【问题讨论】:

    标签: wpf


    【解决方案1】:

    您应该在您的应用中使用MVVM architectural pattern。然后只需在 Page 和 Window 之间共享/复制到窗口您的 ViewModel(负责保存 View 和 Model 之间的值和协调)。因此,您将能够以两种方式正确处理同步。

    更新

    在您的事件处理程序中,您需要从DataGrid.Parent 向上走,依此类推,直到找到父页面。您需要使用this approach on finding visual parents。

    【讨论】:

    • 我不想使用 MVVM 模式。我只想要页面的正确对象。
    • 我已经设置为Window w = new Window(); w.Owner = this; w.Show();。但在我的场景中,我从 WPF Page 调用 WPF Window。我怎样才能做到这一点?这对我将 Page 设置为 Window 的父级不起作用....
    • 您可以从 Window 继承新类并添加像 Parent 或任何其他将拥有窗口创建者的属性。它的外观和操作类似于 Window,具有满足您需求的附加属性。
    • 我实际上无法得到它......是否有任何示例代码用于从 Window 继承一个新类并添加像 Parent 这样的属性..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多