0

在 vb6 中,我可以轻松地将值从 childwindow 获取到另一个 childwindow .. 例如 frm1.textbox1.text = frm2.listview.item.selectedindex ... 我如何在 wpf 中做到这一点?

我有两个名为 EmployeProfile 的子窗口,另一个是 PrintEmpProfile ... 在 EmployeeProfile 窗口中,有一个列表视图 ...我想要的是如果我要单击打印按钮,我可以从 EmployeeProfile 列表视图中获取值……

到目前为止,这就是我所拥有的。此代码位于 PrintEmpProfile 中

DataTable table = new DataTable("EmpIDNumber");
table.Columns.Add("IDNum", typeof(string));
for (int i = 1; i <= 100; i++)
{
    table.Rows.Add(new object[] { EmployeeProfile.????? });
}

我不知道如何从 EmployeeProfile 列表视图中获取所有值。

4

2 回答 2

0

您可以创建 listview 的属性。

   public ListView EmployeeListView
    {
        get
        {
            return IdOfYourListView;
        }
        set
        {
            IdOfYourListView = value;
        }
    }

现在在 PrintEmpProfile 创建 EmployeeProfile 对象

      EmployeeProfile empf = new EmployeeProfile();
      ListView MyListView = empf.EmployeeListView;
于 2012-11-14T01:15:45.760 回答
0

每当您打开子窗口时,将新子窗口的引用放入集合中。我假设 MyChild 是您在 XAML 中定义的子窗口,例如:

<Window
    x:Class="TEST.MyChild"
    ...

您可以在 App.xaml.cs 中定义一个包含子窗口的静态列表

public partial class App : Application
{
    public static List<MyChild> Children
    {
        get
        {
            if (null == _Children) _Children = new List<MyChild>();
            return _Children;
        }
    }

    private static List<MyChild> _Children;
}

每当您打开子窗口时,将其添加到此集合中,例如:

MyChild Child = new MyChild();
App.Children.Add(Child);
Child.Show();

当您关闭您的子窗口时,您还应该从该集合中删除子项。您可以在窗口的关闭事件中执行此操作。在 XML 中定义封闭通风口:

Closed="MyChild_Closed"

在后面的代码中:

    private void MyChild_Closed(object sender, EventArgs e)
    {
        // You may check existence in the list first in order to make it safer.            
        App.Children.Remove(this); 
    }

每当一个子窗口想要访问其他子窗口的 ListView 时,它就会从集合中获取子窗口的引用,然后直接调用 XAML 中定义的 ListView。

    MyChild ChildReference = App.Children.Where(x => x.Title == "Child Title").FirstOrDefault();
    if (null != ChildReference)
{
    ChildReference.listview.SelectedIndex = ...
}
于 2012-11-14T01:31:21.677 回答