C# 在UserControl中显示属性

C# 在UserControl中显示属性,c#,wpf,class,C#,Wpf,Class,我有一个具有很多属性的类,比如: public class Person { public string Firstname{get;set;} public string Lastname{get;set;} public string Address{get;set;} public string City{get;set;} public int ZIPCode{get;set;} public string Country{get;set;} } 我

我有一个具有很多属性的类,比如:

public class Person
{
   public string Firstname{get;set;}
   public string Lastname{get;set;}
   public string Address{get;set;}
   public string City{get;set;}
   public int ZIPCode{get;set;}
   public string Country{get;set;}
}
我想创建一个UserControl,在这里我可以传递一个Person实例,并为每个属性显示一个带有PropertyName的TextBlock和一个带有属性值的TextBox

我的第一个想法是使用两列6行的网格。但是要把它打下来需要很多“工作”


有没有“简单”的方法来实现这一点?我可以用datatemplates这样做吗?

一个简单的解决方案是使用
PropertyGrid
,例如。

一个简单的解决方案是使用
PropertyGrid
,例如。

使用绑定

您可以将usercontrol的datacontext设置为对象,并绑定到对象的属性

或者,您可以在用户控件中声明属性,并使用绑定将每个textblock绑定到您刚刚声明的用户控件属性

您的选择使用绑定

您可以将usercontrol的datacontext设置为对象,并绑定到对象的属性

或者,您可以在用户控件中声明属性,并使用绑定将每个textblock绑定到您刚刚声明的用户控件属性


你的选择

第一,不是很多“工作”。我花了不到5分钟的时间为所有这些生成一个合适的
DataTemplate
。第二,如果需要,可以在VisualStudio设计器中执行此操作。看一看,你可以使用PropertyGrid,也可以使用Reflection。首先,这不是很多“工作”。我花了不到5分钟的时间为所有这些生成一个合适的
DataTemplate
。第二,如果需要,可以在VisualStudio设计器中执行此操作。看一看,您可以使用PropertyGrid或反射。这一点很清楚。但是在这个解决方案中,我必须手动创建所有带有标签和文本框的行。将person属性设置到文本框中不是问题。除非您有大量的行和列,并且没有复制/粘贴的权限,否则我不认为这是一项多么繁重的工作。这一点很清楚。但是在这个解决方案中,我必须手动创建所有带有标签和文本框的行。将person属性设置到文本框中不是问题。除非您有大量的行和列,并且没有复制/粘贴的权限,否则我不认为这是一项多么繁重的工作。