2013-09-23 4 views
0

У меня есть приложение WPF. Он содержит объект OrderBlock, который содержит другие объекты, plesase см. Краткое представление о классе.ListBox в ошибке привязки RowDetail

public class OrderBlocks 
{ 
    private List<Order> _orders; 
    [XmlElement("tF_Transactions")] 
    public List<Order> Orders { get { return _orders; } set { _orders = value; OnPropertyChanged("Orders"); } } 
} 

public class Order : INotifyPropertyChanged 
{ 
     [XmlIgnore] 
     public List<Duplications> DuplicateHolder { get; set; } 
} 

public class Duplications 
    { 
     public string ID { get; set; } 
     public string Name { get; set; } 

     public Duplications(string newID, string newName) 
     { 
      ID = newID; 
      Name = newName; 

     } 
    } 

У меня есть datagrid, привязанный к моему объекту Заказы типа List Orders. Мой datagrid имеет деталь строки, так что, когда пользователь нажимает на строку, отображаются дополнительные данные. Я добавил список для этой строки. Я хочу, чтобы эта строка подробно отображала список, который отображает мой объект DuplicateHolder типа List Duplications.

В настоящий момент список пуст. См. Мой код XAML, приведенный ниже. Любая помощь была бы велика, как всегда.

<ListBox Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="3" Name="lbIdentifier" SelectionMode="Single" DataContext="{Binding OrderBlock}" HorizontalContentAlignment="Stretch"> 
         <ListBox.ItemTemplate> 
          <DataTemplate> 
           <Grid Margin="0,2"> 
            <Grid.ColumnDefinitions> 
             <ColumnDefinition Width="Auto"/> 
             <ColumnDefinition Width="*"/> 
            </Grid.ColumnDefinitions> 
            <TextBlock Grid.Column="0" Text="{Binding Path=DuplicateHolder.ID}" FontSize="10" HorizontalAlignment="Left" Margin="5,0,0,0"/> 
            <TextBlock Grid.Column="1" Text="{Binding Path=DuplicateHolder.Name}" FontSize="10" HorizontalAlignment="Left" Margin="5,0,0,0"/> 
           </Grid> 
          </DataTemplate> 
         </ListBox.ItemTemplate>                       
        </ListBox>   

ответ

0

Попробуйте

<Listbox ItemSource = {Binding DuplicateHolder}/> 

и

<TextBlock Grid.Column="0" Text="{Binding Path=ID}".../> 
+0

Ну ListBox все еще пуст, однако, если я нажму на ListBox позволяет мне выбрать две «строки» которого я ожидаю. Шрифт черный, поэтому не уверен, что его просто случай, когда значения скрыты? – mHelpMe

+0

Вы уже изменили свойство Text of TextBlock? – Maximus

+0

Теперь он показывает. Я просто изменил Text = {Binding Path = DuplicateHolder.ID} на Text = {Binding Path = ID} и теперь его работу. Огромное спасибо – mHelpMe

0

т кажется, что вы не установили привязок правильно, потому что ListBox контекст должен быть список дупликации и ItemTemplate должно быть для один экземпляр дублирования из списка дубликатов. Так что, если глобальная DataContext является экземпляром OrderBlocks в окне списка будет привязан к DuplicateHolder Заказа:

<ListBox Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="3" Name="lbIdentifier" SelectionMode="Single" DataContext="{Binding Path=DuplicateHolder}" HorizontalContentAlignment="Stretch"> 
        <ListBox.ItemTemplate> 
         <DataTemplate> 
          <Grid Margin="0,2"> 
           <Grid.ColumnDefinitions> 
            <ColumnDefinition Width="Auto"/> 
            <ColumnDefinition Width="*"/> 
           </Grid.ColumnDefinitions> 
           <TextBlock Grid.Column="0" Text="{Binding Path=ID}" FontSize="10" HorizontalAlignment="Left" Margin="5,0,0,0"/> 
           <TextBlock Grid.Column="1" Text="{Binding Path=Name}" FontSize="10" HorizontalAlignment="Left" Margin="5,0,0,0"/> 
          </Grid> 
         </DataTemplate> 
        </ListBox.ItemTemplate>                       
       </ListBox>  
Смежные вопросы