我试图在关闭窗口对话框后获得价值:

public partial class MyDialogWindow: Window
{
    public string selectedItem = "";
    public MyDialogWindow(string selectedItem)
    {
        InitializeComponent();
        this.selectedItem = selectedItem;
    }

    ...
}


// To call dialog
string result = "";
MyDialogWindow dialog = new MyDialogWindow(result);
if (form.ShowDialog().Value)
{
   string res = result;
}


但是“结果”始终是空的。在Winforms中,我可以得到此结果,但在WPF中则不能。那么,关闭窗口后如何从窗口返回结果呢?

最佳答案

字符串在C#中不能像它那样工作-它们是不可变的。

可以像其他人建议的那样使用ref关键字使它起作用,但是,只有在构造函数中设置SelectedItem时,此方法才起作用,这不太可能!

这样做的通常方法是让对话框在对话框中公开一个属性:

public partial class MyDialogWindow: Window
{
    public string SelectedItem
    {
        get;
        set;
    {

    // etc...
}

MyDialogWindow dialog = new MyDialogWindow(result);
if (form.ShowDialog().Value)
{
   string res = dialog.SelectedItem;
}


这是其他对话框(例如打开/保存文件对话框)的工作方式。

09-11 05:04