Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Microsoft Expression Blend将CLR对象绑定到WPF控件_C#_Wpf_Data Binding_Expression Blend_Binding - Fatal编程技术网

C# 使用Microsoft Expression Blend将CLR对象绑定到WPF控件

C# 使用Microsoft Expression Blend将CLR对象绑定到WPF控件,c#,wpf,data-binding,expression-blend,binding,C#,Wpf,Data Binding,Expression Blend,Binding,我有以下班级成员: public class Person { public string Name { get { return name; } set { name = value; } } public string Nickname { get { return nickname; } set { nickname = value; } }

我有以下班级成员:

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有一个名为昵称文本框的文本框。我想使用Microsoft Expression Blend将此人的昵称绑定到其文本属性。我该怎么做

以下是我迄今为止所做的尝试(没有成功):

  • 我创建了新的对象数据源来LayoutRoot,它指向我的引擎类,即PersonEditorFormController
  • 我为昵称文本框的文本属性创建了数据绑定-我在数据上下文选项卡中从PersonEditorForm中选择SelectedPerson.昵称
  • 我创建了以下窗口加载事件来填充SelectedPerson属性:

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

  • 请帮忙。谢谢

    您需要在两个类上实现
    INotifyPropertyChanged
    ,并在任何属性更改时引发
    PropertyChanged
    事件