私はメインウィンドウを持っており、ボタンがあります。メインウィンドウのボタンを押すと、サブウィンドウが開きます。サブウィンドウにはテキストボックスがあり、サブウィンドウでテキストを入力して追加ボタンをクリックすると、テキストがメインウィンドウに表示されます。これをどのように達成するのですか?前もって感謝します。WPFは1つのウィンドウから別のウィンドウにテキストを渡します
-1
A
答えて
1
MainWindowクラスのパラメータ化されたコンストラクタを作成し、サブウィンドウからメインウィンドウにTextboxの値を渡し、MainWindowでそのラベルに内容を設定できます。 がここに実装したものです MainWindow.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();
}
}
はサブウィンドウすなわちWindow1.xaml.cs
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();
}
}
0
あなたは単に秒のコンストラクタを変更することができるためのコードですウィンドウ:
public partial class Window1 : Window
{
string text;
public Window1 (string _text)
{
InitializeComponent();
this.text = _text;
}
}
0
MainWindowがそれをインスタンス化するときにサブスクライブできる 'ダイアログ'サブウィンドウへのイベント。
ダイアログウィンドウ:(サブウィンドウ):
public class DialogInputEventArgs : EventArgs
{
public string Input { get; set; }
}
public partial class DialogWindow : Window
{
public event EventHandler<DialogInputEventArgs> InputChanged = delegate { };
private void SubmitInputButton_Click(object sender, RoutedEventArgs e)
{
InputChanged(this, new DialogInputEventArgs() { Input = this._inputTextBox.Text });
}
}
は、メインウィンドウ:
private void ShowDialogButton_Click(object sender, RoutedEventArgs e)
{
DialogWindow dw = new DialogWindow();
dw.InputChanged += OnDialogInputChanged;
dw.Show();
}
private void OnDialogInputChanged(object sender, DialogInputEventArgs e)
{
// update the MainWindow somehow using e.Input (the text submitted in dialog)
}
あなたが複数のウィンドウのために、このメカニズムが必要な場合は、私がmessagebusのように、より汎用的なものとなるだろうかオブザーバーパターンのこと。
0
私はCaliburnMicroのframweworkを使用して、コントロール間のより簡単でより良いコミュニケーションを実現することをお勧めします(MVVMパターンを使用していると仮定します)。 CaliburnMicroのすべての機能を実装する必要はなく、コントロール間のメッセージの送受信を管理するためのEventAggregatorだけです。
関連する問題
- 1. 別のウィンドウからWPFウィンドウを開く
- 2. 1つのウィンドウから別のウィンドウに文字列を渡す - XAML
- 3. WPF - 第1ウィンドウから第2ウィンドウを制御します。
- 4. Wpfは、別のウィンドウからウィンドウを閉じるときに検出します。
- 5. 1つのウィンドウから別のウィンドウにデータを渡します(同じQMLファイル内)
- 6. 1つのウィンドウから別のウィンドウへの入力、テキストエリアデータのコピー
- 7. 別のウィンドウのコードビハインドから1つのウィンドウのプロパティにアクセスするには?
- 8. Tkinterのあるウィンドウから別のウィンドウにIntVar()値を渡す
- 9. Powerbuilder - あるウィンドウから別のウィンドウに値を渡す
- 10. プレイス1 WPFウィンドウが次の別の
- 11. Cocoa:別のウィンドウから1つのウィンドウを作成して閉じる
- 12. wpfウィンドウからテキスト入力を取得
- 13. Pythonで1つのxtermウィンドウから別のxtermウィンドウにコマンドを送信
- 14. 1つのウィンドウを別のウィンドウに埋め込む方法
- 15. 1つのvimウィンドウから別のMacOSにコピーする方法
- 16. インスタンスのメンバーをあるウィンドウのフォームから別のウィンドウのフォームに渡す
- 17. Tkinter - 1つのウィンドウを開き、別のウィンドウを閉じる
- 18. PyQT別のPyQTウィンドウで1つのウィンドウをアタッチ/ドラッグ... - 同じプログラム
- 19. WPFはデータグリッドから別のウィンドウにデータを表示
- 20. WPF C#プログレスバーの別ウィンドウ
- 21. Powerbuilder - 別のウィンドウからウィンドウを開く
- 22. app.xaml.csから順に2つのウィンドウを開きます。WPF
- 23. クラス配列をあるWPFウィンドウから別のウィンドウに戻すにはどうすればよいですか?
- 24. C#WPFで別のプロジェクトから新しいウィンドウを開く
- 25. ウィンドウからのテキストのコピー
- 26. 別のWPFウィンドウからリストを更新する方法
- 27. 別のWPFウィンドウからリストを継承する
- 28. ウィンドウ位置を別のウィンドウにロックしますか?
- 29. wpf datatemplateを新しいウィンドウに渡します。
- 30. SilkTestでは、1つのウィンドウが別のウィンドウから継承することが可能です
質問はなぜこれが必要ですか?これはちょうどこのような1つの呼び出しで小さなアプリケーションですか?あるいはこれらの数十が必要になりますか?窓が2つしかありませんか? – sTrenat
私は多くのサブウィンドウを持っていますが、この問題が残っています。すべてのウィンドウがこのウィンドウでのみ動作しています。サブウィンドウからメインウィンドウにテキストが表示されません。 –
汚い方法:mainWindowへの参照をコンストラクタまたは他のメソッドで渡して、MainWindowをApplication.Current(...)で取得する静的プロパティです。それほど悪くない:IoC、コンテナからウィンドウを取得する。いいえ:EventAggregator/listener/observer/mediator/messenger oop – sTrenat