使用2 ObservableCollection填充TabControl:一个用于项目,一个用于内容

时间:2018-02-19 08:06:40

标签: c# wpf tabcontrol

在我的ViewModel中,我有2 ObservableCollection个不同类型(ListeEquipementsListeTypeEquipements)。我尝试做的是使用我的第一个集合创建我的Tabcontrol的项目,并使用我的第二个集合的属性填充每个标签内容。

我的窗口的详细信息(实际上是我的UserControl):

<UserControl.DataContext>
    <vm:EquipementsViewModel/>
</UserControl.DataContext>
<TabControl Grid.Row="1" 
                    TabStripPlacement="Bottom"
                    ItemsSource="{Binding ListeTypeEquipements}">
            <TabControl.ItemTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding Nom}"/>
                </DataTemplate>
            </TabControl.ItemTemplate>
            <TabControl.ContentTemplate>
                <DataTemplate>
                    <DataGrid ItemsSource="{Binding ListeEquipements}">
                            <DataGrid.Columns>
                            <DataGridTextColumn Header="Tag" Binding="{Binding ListeEquipements.Tag}" />
                            </DataGrid.Columns>
                    </DataGrid>
                </DataTemplate>
            </TabControl.ContentTemplate>
        </TabControl>

1 个答案:

答案 0 :(得分:1)

我设法让它更好一点,做得那样:

<TabControl Grid.Row="1" 
                    TabStripPlacement="Bottom"
                    ItemsSource="{Binding ListeTypeEquipements}"          
         >
            <TabControl.Resources>
                <CollectionViewSource x:Key="Equipements" Source="{Binding ListeEquipements}"/>
             </TabControl.Resources>
            <TabControl.ItemTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding Nom}"/>
                </DataTemplate>
            </TabControl.ItemTemplate>
            <TabControl.ContentTemplate>
                <DataTemplate>
                    <Label Content="{Binding Source={StaticResource Equipements}, Path=Tag}"/>
                </DataTemplate>
            </TabControl.ContentTemplate>
        </TabControl>

我的新问题是,我希望我的ContentTemplate列出Equipement的{​​{1}},现在我只能显示第一个成员。