包含List <t>的WPF ObservableCollection

时间:2018-03-08 02:45:44

标签: c# wpf

有一段时间我正在努力使用包含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;

任何人都可以帮助我,这里有什么问题吗?

0 个答案:

没有答案