2010-07-11 31 views
0

我有下面的類人:綁定CLR對象WPF控制使用Microsoft表達混合

public class Person 
{ 
    public string Name 
    { 
      get { return name; } 
      set { name = value; } 
    } 

    public string Nickname 
    { 
      get { return nickname; } 
      set { nickname = value; } 
    } 

    private string nickname; 
    private string name; 

    public Person(DataRow row) 
    { 
      this.name = Convert.ToString(row["Name"]); 
      this.nickname = Convert.ToString(row["Nickname"]); 
    } 
} 

,並在不同的裝配另一類PersonEditorFormController,其作用類似於在發動機爲WPF類PersonEditorForm.xaml:

public class PersonEditorFormController 
{ 
    public Person SelectedPerson 
    { 
     get { return person; } 
     set { person = value; } 
    } 

    private Person person; 

    public void GetPerson(string name) 
    { 
     try 
     { 
      Common.dbController.OpenConnection(); 
      Common.dbController.BeginTransaction(); 

      PersonController personController= new PersonController(); 
      string[] fields = new string[] { "Name" }; 
      string[] values = new string[] { name }; 
      this.person = personController.GetPerson(fields, values); 

      Common.dbController.CommitTransaction(); 
     } 
     catch (Exception ex) 
     { 
      throw ex; 
     } 
     finally 
     { 
      Common.dbController.CloseConnection(); 
     } 
    } 
} 

PersonController是一個類,它提供了從數據庫獲取數據和構造person對象的方法。

現在,PersonEditorForm.xaml有一個名爲NicknameTextBox的文本框。我想使用Microsoft Expression Blend將人的暱稱綁定到其Text屬性。我怎麼做?

這裏是我試過至今(沒有成功):

  1. 我創造了新的對象數據源到LayoutRoot指向我的引擎類,即PersonEditorFormController。
  2. 我爲NicknameTextBox的Text屬性創建了數據綁定 - 我在Data Context選項卡中從PersonEditorForm中選擇了SelectedPerson.Nickname。
  3. 我創建了下面的窗口中加載事件來填充SelectedPerson屬性:

    private void Window_Loaded(object sender, System.Windows.RoutedEventArgs e) 
    { 
        PersonEditorFormController controller = 
         this.LayoutRoot.GetValue(Grid.DataContextProperty) as PersonEditorFormController; 
        controller.GetPerson("Some_name"); 
    } 
    

請幫助。謝謝。

回答

1

您需要在兩個類上都實現INotifyPropertyChanged,並在任何屬性發生更改時提升PropertyChanged事件。

+0

感謝SLacks,解決了它! – Boris 2010-07-13 12:31:47