结合在DataGrid中的ItemsControl的一个DataTemplate(Binding D

2019-10-21 17:00发布

我有发生与结合我试图设立一个奇怪的问题。 我有我使用的渲染WrapPanel它包含了其DataTemplate中一个DataGrid其中一个ItemsControl。 最后,我想用WrapPanel显示一个DataGrid中为获取绑定到ItemsControl的列表中的每个项目。 现在它创建的DataGrid和头的正确数量,但没有实际的约束数据。 我没有足够的经验与WPF知道我要去哪里误入歧途这里。 该项目本身的元组对象。 为什么我的数据值得到约束?

 <ItemsControl ItemsSource="{Binding Path=GetDestinctCodeCounts}" Grid.Row="2" Grid.ColumnSpan="6" HorizontalAlignment="Center" HorizontalContentAlignment="Stretch"> <ItemsControl.Template> <ControlTemplate> <WrapPanel IsItemsHost="True" /> </ControlTemplate> </ItemsControl.Template> <ItemsControl.ItemTemplate> <DataTemplate> <DataGrid AutoGenerateColumns="False" IsReadOnly="True" Margin="2,0,2,2" ItemsSource="{Binding}"> <DataGrid.Columns> <DataGridTextColumn Width="Auto" Binding="{Binding Item1}" Header="Code" /> <DataGridTextColumn Width="Auto" Binding="{Binding Item2}" Header="Count" /> </DataGrid.Columns> </DataGrid> </DataTemplate> </ItemsControl.ItemTemplate> </ItemsControl> 

public List<Tuple<string, int>> GetDestinctCodeCounts
    {
        get
        {
            if (UnQualifiedZips.Count > 0)
            {
                var distinctCount = UnQualifiedZips.GroupBy(x => x.Item2).Select(x => new Tuple<string, int>(x.Key, x.Count())).ToList();
                return distinctCount;
            }
            else return new System.Collections.Generic.List<Tuple<string, int>>();
        }
    }

Answer 1:

你GetDistinctCodeCounts给你一个IEnumerable < tuple < string, int > >

但是,你需要一个IEnumerable< IEnumerable< tuple < string,int>> >

小测试:更换与此属性GetDistinctCodeCounts:

   List<List<Tuple<string, int>>> tuples = new List<List<Tuple<string, int>>>();
        tuples.Add(
            new List<Tuple<string, int>>()
            {
             new Tuple<string,int>("a",1),
             new Tuple<string,int>("b",2),
            }
            );

        tuples.Add(
           new List<Tuple<string, int>>()
            {
             new Tuple<string,int>("a",1),
             new Tuple<string,int>("b",2),
            }
           );

我的测试:



文章来源: Binding DataGrid Within A DataTemplate of ItemsControl