のカスタムユーザー入力を取得する方法を、私は私の問題の簡易版を提示することができますしてください:ベストプラクティス:WPF
は私がして、いくつかのPerson
オブジェクトを表示したいと考えているMainWindow
と呼ばれるメインウィンドウを持っているとしましょうMainWindow
。私はすべての入力を取得しようと
:さて、これらのPerson
オブジェクトをインスタンス化するために、私はここで
Person
をインスタンス化し、その結果をメインフォームに返送します。次のように
MainWindow
は、パブリックメソッドを持っています
public void (Person input)
{
// use the fields in input to add details to window
}
私はそのコンストラクタでMainWindow
への参照を取得して、フィールドに保存しますPersonInput
と呼ばれるプロジェクトで、別のウィンドウを持っています。
private MainWindow owner;
public PersonInput(MainWindow parent)
{
InitializeComponent();
owner = parent;
}
PersonInput
はPerson
オブジェクトの必要なフィールドに対応する入力フィールドの数を有しています。次のように加えて
は、それが関連するonClickイベントハンドラで「AddPerson」というボタンがあります(擬似コード)
private void button_Click(object sender, RoutedEventArgs e)
{
//get all fields from this form..
String enteredName = this.nameText.Text;
//get more fields....
Person p = new Person(...);
//owner is MainWindow, send Back the Person so details can be displayed
owner.addPerson(p);
this.Close();
}
あなたが期待するよう、MainWindow
は上の持っている「AddPersonButton」という名前のボタンがありますこのようにイベントハンドラをクリックしてください:このメソッドの動作
private void button_Click(object sender, RoutedEventArgs e)
{
PersonInput x = new PersonInput(this); //pass this as a reference
//so this window can send us back the result when they have it
x.Show(); //open the child window so user can enter information
}
が、私はそれはそれを行うためのベストプラクティスの方法ではない、かなり確信しています。私はこれを行う慣用的な.net WPFの方法を学びたいと思います。教えてください
私はほとんど2kの担当者を持つユーザーとして、あなたは最高の練習問題はStackOverflowのに適していないことを知っていることを期待していたデータバインディング... –
に関するいくつかのチュートリアルを開始したいです彼らが意見を出した答えを生み出すにつれて。 – DavidG
@DavidGこれは厳密にはベストプラクティスの質問ではありませんが、.NETでこのタスクを達成する方法はわかりませんが、私が試したことを人に知らせるために試してみたいと思っています。 – ForeverStudent