2009-04-10 17 views
1

私は3つのgridview列を持つリストビューコントロールを配置したWPFアプリケーションを使用しています。最初のGridview列にはラベルControlがあり、残りの2つのGridview列にはテキストボックスコントロールがあります。WPFのGridview列コントロールから値を読み取る方法

私の問題は、ユーザーが最初のGridviewテキストボックス列に値を入力し、2番目のgridviewテキストボックス列をある値で更新する必要があるということです。それを行う方法はありますか?

私はリストビューをコードビハインドファイルからのデータテーブルで埋めています。

また、第1グリッドビュー列のラベルコントロールの値を取得する方法はありますか。事前に

おかげ URS Frnd :)

+0

GridViewを私の友人にどのように埋め込んでいますか?WPFデータバインディング? – Gishu

答えて

0

あなたはバインディングのElementNameを使用して2つのTextBoxのをバインドすることができます。それらのグリッド列は無関係です。以下の例では、textBox2のテキストが自動的にtextBox1に入力されたテキストに更新されます。

<TextBox Text="TextBox" Name="textBox1" /> 
    <TextBox Text="{Binding ElementName=textBox1, Path=Text}" Name="textBox2"/> 

秒のテキストボックスは、あなたが結合し、代わりにプログラム的にそれを行う上で削除することもできます別の値で、更新が必要な場合:あなたは割り当てる必要がLabelコントロールの値を取得するには

textBox2.Text = textBox1.Text + " some text"; 

その名前を使用してコードビハインドファイルにアクセスすることができます。

XAML:

<Label Name="myLabel" Content="Label"/> 

のC#:

// Assuming you have assigned text content to the Label as in the above XAML. 
string labelContent = myLabel.Content as string; 
+0

これは単にtextbox1をtextbox1に入力した値に設定します。私はOPがtextbox1の値に基づいて別の値を計算し、それをtextbox2に表示したいと思います。 – Gishu

+0

あなたは正しいかもしれません。私はそれについて小さなメモを付け加えました。 – sipwiz

0

私はWPF GridViewコントロールは、ListViewコントロールのためだけのビューモード(感じるnは見える)で表示されるものと.. ほとんどのものと同様に、 WPFでは、ViewModelパターンでこれを行うことをお勧めします。

  • これは、Gridの各行に対してViewModelオブジェクトを作成したことになります。実際のモデルはDataTableの行です。 Viewモデルには実際のモデルのデータがシードされます。つまり、DataTableの各行から新しいViewModelインスタンスを作成します。次に、ViewModelオブジェクトをグリッドに取り込みます。
  • Viewモデルは、実際のビューに表示する必要がある各値のプロパティを公開します。そのため、この場合、ViewModelは3つのプロパティ(各列)を公開します。
  • ViewModelのそれぞれのプロパティにバインドするためにUI列を配線します。
  • これで、ViewModel.Property1には、変更時に正しい計算値でProperty2を更新するロジックが含まれていました。両方ともPropertyChanged通知をトリガーする必要があり、GridViewは更新された値を両方のセルに反映する必要があります。
関連する問題