WPFの2つのインターフェイス間でどのように情報を交換しますか?
WPFでは、インターフェイス間で情報を交換する方法として、次のような方法があります。
- コンストラクタ経由で情報を渡す:新しい画面を開く際に、渡したい情報を新しい画面のコンストラクタにパラメータとして渡すことができます。新しい画面では、コンストラクタでこれらのパラメータを受け取り、対応する変数に格納することができます。
たとえば、新しい画面を開くと、次のように情報を渡せます。
var newWindow = new NewWindow("要传递的信息");
newWindow.Show();
新インターフェースのコンストラクタで情報を取得する:
public NewWindow(string information)
{
InitializeComponent();
// 将信息存储在变量中
this.Information = information;
}
- プロパティによる情報の受け渡し:新しい画面で、受け渡す情報を格納するようなパブリックプロパティを定義します。そして、新しい画面を開いた後、そのプロパティで情報のセット・ゲットを行います。
例えば、新しいUIで公開プロパティを定義する際は、
public string Information { get; set; }
新しいインターフェースに移動するときに、次のように情報を渡すことができます。
var newWindow = new NewWindow();
newWindow.Information = "要传递的信息";
newWindow.Show();
- イベントとデリゲートの使用:あるインターフェースでイベントを定義できます。情報を渡す必要があるときにこのイベントをトリガーし、イベントパラメーターとして情報を渡します。別のインターフェースがこのイベントをサブスクライブし、イベントハンドラーで渡された情報を受け取ることができます。
たとえば、発生元のインターフェイスでイベントを宣言する
public event EventHandler<InformationEventArgs> InformationUpdated;
イベントが発生すると情報が渡され、情報を転送する必要があります。
InformationUpdated?.Invoke(this, new InformationEventArgs("要传递的信息"));
ネイティブなインターフェイスのイベントにサブスクライブして、情報を取得する。
sourceWindow.InformationUpdated += SourceWindow_InformationUpdated;
private void SourceWindow_InformationUpdated(object sender, InformationEventArgs e)
{
var information = e.Information;
// 处理传递的信息
}
これらの手法を用いれば、WPFにおいて、インターフェイス間の情報を簡便にやり取りさせることができる。