2010-06-03 8 views
0

Я использую ленточное окно, а в «области содержимого ниже» у меня есть сетка, в которой я буду показывать 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) ...

Спасибо!

+0

Можете ли вы сказать, что 'общественное TestSnpList()' это? Вы можете достичь кода 'this.lvPersonList.ItemsSource = personList;' используя отладчик. 'Я получаю полные имена классов. Получаете ли вы имя класса Person? – Amsakanna

+0

Ах, извините, этот TestSnpList - настоящее имя класса (я переименовал его здесь, и я забыл переименовать конструктор). Да, я могу связаться с ним - у него есть 2 предмета (myNamespace.Person). Когда визуализируется listView, я вижу два элемента: myNamespace.Person myNamespace.Person Любые идеи? – Heko

ответ

0

Кажется, проблема в RibbonWindow. Если я использую привязку Window и UserControl, это прекрасно работает, но если я использую привязку RibbonWindow (лента Odyssey), это не сработает. То, что я не понимаю, что в расчетном режиме я могу видеть правильные значения и в рабочем режиме я вижу только имена классов:

http://i977.photobucket.com/albums/ae255/HekoSLO/designModeVSrunning.png

Смежные вопросы