有一段时间我正在努力使用包含List的ObservableCollection。我无法让它以某种方式工作,每个List都在它自己的扩展器中。 您可以将输入数据想象为每天的记录列表,每个列表包含当天的订单。
以下是一些代码:
我的第1版:
public class Order
{
public string OrderId { get; private set}
}
public ObservableCollection<Order> ObservableResults
{
get
{
return new ObservableCollection<Order>
{
new Order("Foo"),
new Order("Bar")
};
}
}
XAML文件:
<ScrollViewer>
<ListView Background="Transparent" ItemsSource="{Binding ObservableResults}">
<ListView.View>
<GridView>
<GridViewColumn Header="Order Id" Width="650" DisplayMemberBinding="{Binding OrderId, UpdateSourceTrigger=PropertyChanged}" />
</GridView>
</ListView.View>
/ListView>
</ScrollViewer>
这个工作得很好,但问题是,我在单个网格视图中有所有订单,这是我不喜欢的东西所以我想修改它,我会得到List of of订购并使用这些列表填充ObservableCollection。几乎每个列表代表一天的订单。所以我修改了这样的代码:
代码
public class Order
{
public string OrderId { get; private set}
}
public ObservableCollection<List<Order>> ObservableResults
{
get
{
return new ObservableCollection<Order>
{
new List<Order>
{
new Order("Foo")
},
new List<Order>
{
new Order("Bar")
}
};
}
}
但我现在确实遇到了XAML部分的问题......我不太确定,如何实现以下目标:
它将是一个单独的滚动视图,其中每个List<Order>
将封装在自己的Expander中(因此我可以每天单独打开)。到目前为止,我有这个:
XAML第2版:
<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto" Background="Red">
<ListView Background="Transparent" ItemsSource="{Binding ObservableResults}">
<ListView.ItemTemplate>
<DataTemplate>
<Expander>
<Expander.Header>
<TextBlock Text="{Binding Path=(ItemsControl.AlternationIndex), RelativeSource={RelativeSource AncestorType=ListViewItem}" />
</Expander.Header>
<ListView ItemsSource="{Binding}">
<ListView.View>
<GridView>
<GridViewColumn Header="Order ID" Width="650" DisplayMemberBinding="{Binding OrderId, UpdateSourceTrigger=PropertyChanged}" />
</GridView>
</ListView.View>
</ListView>
</Expander>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</ScrollViewer>
但在这种情况下,视图中没有数据,ReSharper说,它:
无法解析符号&#39; OrderId&#39;
任何人都可以帮助我,这里有什么问题吗?