【发布时间】:2010-07-11 22:50:34
【问题描述】:
我有以下类人:
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 是一个类,它提供了从数据库中获取数据并构造人员对象的方法。
现在,PersonEditorForm.xaml 有一个名为 NicknameTextBox 的文本框。我想使用 Microsoft Expression Blend 将该人的昵称绑定到其 Text 属性。我怎么做?
这是我迄今为止尝试过的(没有成功):
- 我为 LayoutRoot 创建了新的对象数据源,它指向我的引擎类,即 PersonEditorFormController。
- 我为 NicknameTextBox 的 Text 属性创建了数据绑定 - 我从 Data Context 选项卡的 PersonEditorForm 中选择了 SelectedPerson.Nickname。
-
我创建了以下窗口加载事件来填充 SelectedPerson 属性:
private void Window_Loaded(object sender, System.Windows.RoutedEventArgs e) { PersonEditorFormController controller = this.LayoutRoot.GetValue(Grid.DataContextProperty) as PersonEditorFormController; controller.GetPerson("Some_name"); }
请帮忙。谢谢。
【问题讨论】:
标签: c# wpf data-binding expression-blend binding