1. ホーム
  2. wpf

[解決済み] WPF: ダイアログ/プロンプトの作成

2023-03-22 20:28:27

質問

ユーザー入力用のテキストボックスを含むダイアログ/プロンプトを作成する必要があります。私の問題は、ダイアログを確認した後にテキストを取得する方法です。通常、私はこのためにクラスを作り、プロパティにテキストを保存します。しかし、私はXAMLを使用してダイアログを設計したいのです。そのため、XAMLコードを拡張して、テキストボックスの内容をプロパティに保存する必要があります - しかし、それは純粋なXAMLでは不可能だと思います。私がやりたいことを実現するための最良の方法は何でしょうか?XAMLから定義することができ、かつ、入力を返すことができるダイアログを構築するにはどうしたらよいでしょうか?どんなヒントでもありがとうございます。

どのように解決するのですか?

責任ある回答は、ダイアログ用の ViewModel を構築し、TextBox で双方向のデータバインディングを使用して、ViewModel がいくつかの "ResponseText"property またはその他を持つようにすることを私が提案することです。これは十分に簡単なことですが、おそらく過剰な作業です。

実用的な答えは、テキスト ボックスに x:Name を与え、それがメンバーになるようにし、このようにクラスの背後にあるコードのプロパティとしてテキストを公開することでしょう。

<!-- Incredibly simplified XAML -->
<Window x:Class="MyDialog">
   <StackPanel>
       <TextBlock Text="Enter some text" />
       <TextBox x:Name="ResponseTextBox" />
       <Button Content="OK" Click="OKButton_Click" />
   </StackPanel>
</Window>

そして、後ろのコードで...

partial class MyDialog : Window {

    public MyDialog() {
        InitializeComponent();
    }

    public string ResponseText {
        get { return ResponseTextBox.Text; }
        set { ResponseTextBox.Text = value; }
    }

    private void OKButton_Click(object sender, System.Windows.RoutedEventArgs e)
    {
        DialogResult = true;
    }
}

次に使用するために...

var dialog = new MyDialog();
if (dialog.ShowDialog() == true) {
    MessageBox.Show("You said: " + dialog.ResponseText);
}