RowDetail绑定失败中的ListBox

时间:2013-09-23 10:56:25

标签: c# wpf xaml datagrid listbox

我有一个WPF应用程序。它包含OrderBlock对象,其中包含其他对象,plesase查看该类的简要视图。

 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;

        }
    }

我有一个数据网格绑定到我的对象类型列表订单的订单。我的数据网格具有行详细信息,因此当用户单击某行时,将显示更多详细信息。我在此行详细信息中添加了一个列表框。我希望此行详细信息显示一个列表框,该列表框显示我的对象DuplicateHolder类型列表重复。

目前列表框为空。请参阅下面我尝试过的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>        

2 个答案:

答案 0 :(得分:0)

试试这个

<Listbox ItemSource = {Binding DuplicateHolder}/>

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

答案 1 :(得分:0)

好像你没有正确设置绑定,因为列表框上下文应该是重复列表,而ItemTemplate应该是重复列表中的一个复制实例。因此,如果全局datacontext是OrderBlocks的实例,则列表框将绑定到Order的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>