【发布时间】:2011-02-27 05:51:33
【问题描述】:
我使用了一个功能区窗口,在“下方的内容区域”中有一个网格,我将在其中显示用户控件。为了演示我的问题,让我们看一下这个简单的 UserControl:
<ListView x:Name="lvPersonList">
<ListView.View>
<GridView>
<GridViewColumn Width="120" Header="Name" DisplayMemberBinding="{Binding Name}"/>
<GridViewColumn Width="120" Header="Height" DisplayMemberBinding="{Binding Height}"/>
</GridView>
</ListView.View>
</ListView>
还有代码:
public partial class MyUserControl: UserControl
{
private List<Person> personList;
public TestSnpList()
{
InitializeComponent();
this.personList = new List<Person>();
this.personList.Add(new Person { Name = "Chuck Norris", Height = 210 });
this.personList.Add(new Person { Name = "John Rambo", Height = 200 });
this.lvPersonList.ItemsSource = personList;
}
}
public class Person
{
public string Name { get; set; }
public int Height { get; set; }
}
父窗口:
<Grid x:Name="grdContent" DockPanel.Dock="Top">
<controls:MyUserControl x:Name="myUserControl" Visibility="Visible"/>
</Grid>
我不明白为什么这个绑定不起作用。而不是值(名称和高度),我得到完整的类名。如果我在窗口中使用此代码,它可以正常工作。
有什么想法吗?我希望这个用户 contorl 为自己工作(它从数据库中获取数据并在 ListView 中表示它)...
谢谢!
【问题讨论】:
-
你能说一下
public TestSnpList()是什么吗?您是否能够使用调试器访问代码this.lvPersonList.ItemsSource = personList;。I get full class names你得到类名Person了吗? -
啊抱歉,这个TestSnpList是一个真正的类名(我在这里重命名了它,我忘了重命名构造函数)。是的,我可以到达它 - 它有 2 个项目(myNamespace.Person)。当 listView 呈现时,我可以看到如下两个项目: myNamespace.Person myNamespace.Person 有什么想法吗?
标签: wpf listview binding user-controls