在XAML中循环通过字典键? (WPF)

时间:2017-12-13 09:01:33

标签: c# wpf xaml dictionary

我想在字典中使用新的datagrid foreach键动态创建视图。是否可以在XAML中执行此操作?

我的字典是:
字典< string,List<对象> > 关键是字典的标题,对象列表将显示在数据网格中。 我想在我的字典中生成一个datagrid foreach键。

例如,如果我的词典中有这些条目:

<"Toto", [{"prop1":"tata", "prop2":"titi"}, {"prop1":"tata2", "prop2":"titi2"}]>  
<"Tutu", [{"prop1":"tatax", "prop2":"titix"}]>  

我想在我的程序中显示:

    TOTO                          TUTU
-------------                --------------
Prop1 | Prop2                Prop1  | Prop2  
------|------                -------|------
tata  | titi                 tatax  | titix  
tata2 | titi2  

在ASP.NET中,您可以在视图中间使用@foreach,但是如何在XAML / WPF中生成它?

1 个答案:

答案 0 :(得分:1)

这是我在@ASh和@CelsoLívero的帮助下完成的代码工作代码,我只是发布它以帮助其他人,如果他们有同样的问题。

我的字典值有List<Tag>,这就是为什么我需要放OneWay(因为它是一个只读的数据网格,它满足我的需要)但是如果有人想拥有一个TwoWay绑定,您需要创建ObservableCollection而不是List

<ItemsControl x:Name="itemControlTags" 
        ItemsSource="{Binding CurrentModuleItem.DicoTags}"  
        ScrollViewer.CanContentScroll="True"
        ScrollViewer.VerticalScrollBarVisibility="Auto"
        ScrollViewer.HorizontalScrollBarVisibility="Auto"
        >
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <WrapPanel Orientation="Horizontal"  
                Background="White"
                Width="{Binding ActualWidth, ElementName=itemControlTags}" 
                Height="{Binding ActualHeight, ElementName=itemControlTags}"  />
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>

    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <StackPanel>
                <TextBlock Text="{Binding Key}"></TextBlock>
                <DataGrid AutoGenerateColumns="True" 
                  CanUserAddRows="False" 
                  IsReadOnly="True" 
                  CanUserDeleteRows="False" 
                  Name="TagsDatagrid"
                  ItemsSource="{Binding Path=Value, Mode=OneWay}">
                </DataGrid>
            </StackPanel>

        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>