Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF将文本从一个窗口传递到另一个窗口_C#_Wpf - Fatal编程技术网

C# WPF将文本从一个窗口传递到另一个窗口

C# WPF将文本从一个窗口传递到另一个窗口,c#,wpf,C#,Wpf,我有一个主窗口和一个按钮。当我按下主窗口按钮时,它将打开子窗口。在子窗口中,我有一个文本框,当我输入文本并单击子窗口中的添加按钮时,文本应显示在主窗口上。我如何做到这一点?提前感谢。您可以创建MainWindow类的参数化构造函数,并将Textbox的值从子窗口传递到主窗口,在MainWindow中您可以为该标签设置内容。 下面是实现 main window.xmal.cs public partial class MainWindow : Window { public Mai

我有一个主窗口和一个按钮。当我按下主窗口按钮时,它将打开子窗口。在子窗口中,我有一个文本框,当我输入文本并单击子窗口中的添加按钮时,文本应显示在主窗口上。我如何做到这一点?提前感谢。

您可以创建MainWindow类的参数化构造函数,并将Textbox的值从子窗口传递到主窗口,在MainWindow中您可以为该标签设置内容。 下面是实现 main window.xmal.cs

public partial class MainWindow : Window
    {
    public MainWindow ()
        {
        InitializeComponent();
        }
    public MainWindow (string text) : this()
    {
        label.Content = text;

    }
    private void button_Click (object sender, RoutedEventArgs e)
        {
        Window1 win1 = new Window1();
        win1.Show();
        this.Close();
        }
    }
public partial class Window1 : Window
    {
    private string text;
    public Window1 ()
        {
        InitializeComponent();
        }

    private void button_Click (object sender, RoutedEventArgs e)
        {
        text = textBox.Text;
        MainWindow mainWindow = new MainWindow(text);
        mainWindow.Show();
        this.Close();
        }
    }
下面是子窗口的代码,即Window1.xaml.cs

public partial class MainWindow : Window
    {
    public MainWindow ()
        {
        InitializeComponent();
        }
    public MainWindow (string text) : this()
    {
        label.Content = text;

    }
    private void button_Click (object sender, RoutedEventArgs e)
        {
        Window1 win1 = new Window1();
        win1.Show();
        this.Close();
        }
    }
public partial class Window1 : Window
    {
    private string text;
    public Window1 ()
        {
        InitializeComponent();
        }

    private void button_Click (object sender, RoutedEventArgs e)
        {
        text = textBox.Text;
        MainWindow mainWindow = new MainWindow(text);
        mainWindow.Show();
        this.Close();
        }
    }

您只需修改第二个窗口的构造函数:

   public partial class Window1 : Window
   {
     string text;
     public Window1 (string _text)
     {
     InitializeComponent();
     this.text = _text;
     }
   }

我会在“对话”子窗口中添加一个事件,主窗口可以在实例化它时订阅该事件

对话框窗口:(子窗口):


如果您在多个窗口中需要这种机制,我会选择更通用的机制,比如messagebus或observerpattern

我建议您使用CaliburnMicro FramWork来实现控件之间更简单、更好的通信(假设您使用的是MVVM模式)。您不必实现CaliburnMicro的所有功能,只需使用EventAggregator来管理控件之间的消息发送和处理。

问题是您为什么需要它?这是一个小应用程序,只有一个这样的电话?或者你需要几十个?你只需要两个窗口吗?这是一个应用程序,在其中我有许多子窗口,但我被这个问题困住了,其余所有窗口都工作正常。只有这个窗口,我无法从子窗口到主窗口获取文本。脏方法:静态属性,通过构造函数或任何其他方法传递对主窗口的引用,正在按应用程序获取主窗口。当前。(…)。还不错:IoC,从容器中获取窗口。好:EventAggregator/listener/observer/mediator/messenger或在子窗口中创建事件,从窗口订阅它,butonI在子窗口中创建了一个事件,但无法使用该按钮将其带到主窗口这违反了分离原则这是我在应用程序主窗口XAML文件中尝试的示例代码,您也可以在Window1类mainWindow.label.Content=textBox.Text的按钮单击事件中尝试此代码;我尝试了你的方法,但仍然无法在主窗口中获取文本。