WPFの2つのウィンドウ間での通信方法は何ですか?

WPFで、2つのウィンドウ間の通信を実現するために以下の方法を使用できます:

  1. コンストラクタを通してデータを渡す:あるウィンドウのコンストラクター内で、別のウィンドウのインスタンスをパラメータとして渡し、必要なデータをパラメータから取得できます。
public partial class MainWindow : Window
{
    private SecondWindow secondWindow;

    public MainWindow()
    {
        InitializeComponent();
        
        // 创建第二个窗口实例
        secondWindow = new SecondWindow(this);
    }

    // 在第二个窗口中,可以获取到主窗口的实例,并访问其公共属性或方法
    public void SendMessage(string message)
    {
        // 处理消息
    }
}
  1. 使用イベントとデリゲート:1つのウィンドウでイベントを定義し、別のウィンドウと通信が必要な場合、そのイベントをトリガーしてデータを渡すことができます。別のウィンドウでそのイベントを購読し、データを処理します。
public partial class MainWindow : Window
{
    // 定义事件
    public event Action<string> MessageSent;

    private void SendMessage(string message)
    {
        // 触发事件
        MessageSent?.Invoke(message);
    }
}

public partial class SecondWindow : Window
{
    public SecondWindow()
    {
        InitializeComponent();
        
        // 订阅事件
        var mainWindow = Application.Current.Windows.OfType<MainWindow>().FirstOrDefault();
        if (mainWindow != null)
        {
            mainWindow.MessageSent += HandleMessage;
        }
    }

    private void HandleMessage(string message)
    {
        // 处理消息
    }
}
  1. アプリケーションのAppクラスで静的なプロパティやフィールドを定義し、共有データを保存できます。2つのウィンドウ間で通信するために、そのグローバル変数にアクセスすることができます。
public partial class App : Application
{
    // 全局变量
    public static string SharedMessage { get; set; }
}

public partial class MainWindow : Window
{
    private void SendMessage(string message)
    {
        // 设置全局变量的值
        App.SharedMessage = message;
    }
}

public partial class SecondWindow : Window
{
    public SecondWindow()
    {
        InitializeComponent();
        
        // 获取全局变量的值
        var message = App.SharedMessage;
        
        // 处理消息
    }
}

これらは一般的な実装方法のいくつかです、実際の状況に合わせて適切な方法を選択することができます。

bannerAds