2017-12-31 64 views
0

グリッドを使用してテキストボックスとコンボボックスを保持しています。私はコンボボックスとテキストボックスからのテキストから選択した項目を取得したい。コンボボックスまたはテキストボックスとしてUIElementをキャストしなくてもこれを行う方法がありますか?以下は現在私がこれをやっているところです。C#のWPFコンボボックスまたはテキストボックスからテキストを取得する

foreach (UIElement field in _fields) 
{ 

    string val=""; 
    if (field is TextBox) 
    { 
     TextBox bx = field as TextBox; 
     val=bx.Text; 
    } 
    else if (field is ComboBox) 
    { 
     ComboBox bx = field as ComboBox; 
     val=bx.SelectedItem.ToString(); 
    } 
} 

おかげ

+0

MVVMパターンを使用すると、ウィンドウ/ページ内のデータと同期しているビューモデルが得られます。これは、実際のコントロールに到達する必要がないことを意味します。このコードの目的は何ですか? 'val'のように見えるのは、ループされた最後のコントロールの値を持つということだけです。 – Crowcoder

+0

私は試して説明しますが、基本的には、特定の構文が必要な種類のテキストファイルエディタを開発しています。 ':'で区切られた6-11個のフィールドを持つファイルのセクションがあり、いくつかのフィールドはいくつかのオプションを持つことができます。そのため、コンボボックスには名前や文字列値が必要です。ファイルの構文を検証する関数があります。上のコードは、ユーザーが入力した各行を単に調べ、テキストを取得し、検証関数用のファイルオブジェクトを作成します。 valはファイルオブジェクトに追加したいデータだけです –

答えて

1

WPFのデータにアクセスするための最良の方法は、データバインディングを使用したり、MVVMを使用することです。素早く汚れた方法は、XAMLにx:Nameを割り当てることによって要素に名前を付けることです。次に、要素をコードの中にキャストする必要はありません。

関連する問題