0

我有一个 WPF 应用程序。它包含包含其他对象的 OrderBlock 对象,请参阅该类的简要视图。

 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;

        }
    }

我有一个绑定到我的 List Orders 类型的对象 Orders 的数据网格。我的数据网格有一个行详细信息,因此当用户单击行时会显示更多详细信息。我已在此行详细信息中添加了一个列表框。我希望此行详细信息显示一个列表框,该列表框显示我的 List Duplications 类型的对象 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>        
4

2 回答 2

0

尝试这个

<Listbox ItemSource = {Binding DuplicateHolder}/>

  <TextBlock Grid.Column="0" Text="{Binding Path=ID}".../>
于 2013-09-23T11:06:22.263 回答
0

t 似乎您没有正确设置绑定,因为列表框 Context 应该是重复列表,而 ItemTemplate 应该是重复列表中的一个 Duplication 实例。因此,如果全局数据上下文是 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>     
于 2013-09-23T11:09:57.143 回答