2010-12-08 4 views
2

ok。私は、UIで自分のデータモデルを使用することについて質問します。問題はWindowsフォームにあります。 プレゼンテーション層では、データモデルを関連するテクスチャボックスやlablesなどに設定しますが、データモデルが変更されるたびに、UIも手動で更新する必要があります。同じことが、テキストボックスやUIの何かの値を変更すると再び発生します。私は手動でデータモデルを更新する必要もあります。Windowsアプリケーションでのモデルビューコントロールの問題

これは自動的に起こるように設定する方法はありませんか?データモデルを変更すると、それに応じてUIも変更されますか?また、UIの値を変更すると、データモデルも自動的に更新されますか?

よろしく、

-Kushan-

答えて

2

あなたが後に起こっているものを達成するために、Windowsフォーム内Data Bindingを利用することができます。さまざまな数のサンプルがありますhere

以下のサンプルは、上の2つのTextBox(textBox1テキストボックス、TextBox2を)コントロールと一つButton(ボタン1)を有する単一Formです。 textbox2に新しい名前を付けてbutton1をクリックすると、Form1のctorに見られるようにデータがバインドされているため、textbox1に伝播するPerson.FirstNameプロパティのプロパティが設定されます。

public partial class Form1 : Form 
    { 
     Person _person = new Person(); 

     public Form1() 
     { 
      InitializeComponent(); 

      textBox1.DataBindings.Add(new Binding("Text", _person, "FirstName")); 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      _person.FirstName = textBox2.Text; 
     } 
    } 

    public class Person : INotifyPropertyChanged 
    { 
     private String _firstName = "Aaron"; 
     public String FirstName 
     { 
      get 
      { 
       return _firstName; 
      } 
      set 
      { 
       _firstName = value; 
       PropertyChangedEventHandler handler = PropertyChanged; 
       if(handler != null) 
        handler(this, new PropertyChangedEventArgs("FirstName")); 
      } 
     } 

     #region INotifyPropertyChanged Members 

     public event PropertyChangedEventHandler PropertyChanged; 

     #endregion 
    } 

    [1]: http://msdn.microsoft.com/en-us/library/ef2xyb33.aspx 
+0

回答ありがとうございます。 DataBindingのいくつかのコード例を教えてください。 jstはキーポイントを含む非常に小さな例ですか?私はこれを前に試しました。それでも私が望むように使用することはできませんでした。 – Sency

+1

@ Kushanサンプルと、さまざまなコントロール間のさまざまなサンプルへの別のリンクを追加しました。 Windowsフォームに縛られていない場合は、バインディングアリーナ内で豊富な機能を利用できるようになるため、WPFに船を乗り換えることができます。 –

+1

素晴らしい....ありがとう、アーロン。これは私が必要とするものです。あなたの努力のために再びありがとう。 – Sency

関連する問題