Return 来自另一个 window 的列表值

Return List value from another window

我有两个 windows,windowA 有一个打开按钮 windowBwindowB 有一个关闭按钮,还有 return列表值。我试过这段代码,但值保持为空。 windowB 有 RadGridView 控件,我想从中获取 selectedItem 并将其添加到列表中。

public class WindowA : Window
{
    ...

    private void button_Click(object sender, RoutedEventArgs e)
    {
        WindowB winB = new WindowB();
        if (winB.ShowDialog() == false)
        {
            listClass lc = winB.SelectedItemButton;
            ...
        }
    }
}

public class WindowB : Window
{
 ...
    public listClass SelectedItemButton
    {
        get { return selectedItem; }
        set
        {
            selectedItem = ((listClass)AGridView.SelectedItem);
        }
    }

    private void button_Click(object sender, RoutedEventArgs e)
    {
        this.Close();
    }
}

结果是一个listClass,但里面没有值。为什么?我怎样才能让 selectedItem = ((listClass)AGridView.SelectedItem); 这条线适用于另一个 window?

给你举个例子:

public partial class MainWindow : Window
{
    private void Button_Click(object sender, RoutedEventArgs e)
    {
        Window1 dlg = new Window1();
        if(dlg.ShowDialog()??false)
        {
            MessageBox.Show(dlg.S);
        }
    }
}

    // Dialog
public partial class Window1 : Window
{
    public string S
    {
        get
        {
            return this.txt1.Text;
        }
    }

    private void btnClose_Click(object sender, RoutedEventArgs e)
    {
        this.DialogResult = true;
    }
}

您应该在 Window1 中创建 listClass 变量,当您打开 Window2 时,您应该将此变量作为参数传递。这是我的演示:

第一个window:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        TestClass testClass = new TestClass();
        testClass.Test = "Initial";

        Second second = new Second(testClass);
        second.ShowDialog();

        label.Content = testClass.Test; // It prints "Changed"
    }
}

第二个window:

public partial class Second : Window
{
    TestClass testClass;

    public Second(TestClass sent)
    {
        InitializeComponent();
        testClass = sent;
    }

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        testClass.Test = "Changed"; // Change the value
    }
}

我的测试类(列表类):

public class TestClass
{
    public string Test { get; set; }
}