Я использую ленточное окно, а в «области содержимого ниже» у меня есть сетка, в которой я буду показывать UserControls. Для того, чтобы продемонстрировать мою проблему позволяет взглянуть на этот простой UserControl:WPF 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>
Я не understant почему это связывание не работает. Вместо значений (Name и Height) я получаю полные имена классов. Если я использую этот код в окне, он отлично работает.
Любые идеи? Я бы хотел, чтобы этот пользователь работал на себя (он получает данные из БД и представляет его в ListView) ...
Спасибо!
Можете ли вы сказать, что 'общественное TestSnpList()' это? Вы можете достичь кода 'this.lvPersonList.ItemsSource = personList;' используя отладчик. 'Я получаю полные имена классов. Получаете ли вы имя класса Person? – Amsakanna
Ах, извините, этот TestSnpList - настоящее имя класса (я переименовал его здесь, и я забыл переименовать конструктор). Да, я могу связаться с ним - у него есть 2 предмета (myNamespace.Person). Когда визуализируется listView, я вижу два элемента: myNamespace.Person myNamespace.Person Любые идеи? – Heko