Wpf 如何使用XAML为TabControl中的每个TabItem创建单独的UserControl实例?

Wpf 如何使用XAML为TabControl中的每个TabItem创建单独的UserControl实例?,wpf,xaml,data-binding,user-controls,Wpf,Xaml,Data Binding,User Controls,我正在创建一个WPF应用程序,您可以在其中创建一个配乐。 每个配乐都有相册,其中包含曲目等 我已经将Album creation界面分离到它自己的UserControl中,然后在主窗口中创建了TabControl(此后称为编辑器) 在主项目类中,有一个可观察的唱片集集合,唱片集有一个可观察的曲目集合以及其他属性 我的行动计划是将TabControl绑定到Album ObservableCollection,以便在制作新专辑时,它也为其制作一个新选项卡。这一部分到目前为止还有效。当制作新相册时,我

我正在创建一个WPF应用程序,您可以在其中创建一个配乐。 每个配乐都有相册,其中包含曲目等

我已经将Album creation界面分离到它自己的UserControl中,然后在主窗口中创建了TabControl(此后称为编辑器)

在主项目类中,有一个可观察的唱片集集合,唱片集有一个可观察的曲目集合以及其他属性

我的行动计划是将TabControl绑定到Album ObservableCollection,以便在制作新专辑时,它也为其制作一个新选项卡。这一部分到目前为止还有效。当制作新相册时,我可以看到一个新选项卡,我不必显式地创建一个新的TabItem并将其添加到TabControl中

这是选项卡控件:

                    <TabControl x:Name="AlbumTabs" SelectionChanged="TabControl_SelectionChanged" TabStripPlacement="Left" IsSynchronizedWithCurrentItem="True" ItemsSource="{Binding CurrentProject.AlbumCollection}">
                        <TabControl.Resources>
                            <DataTemplate x:Key="Album_UserControl" x:Shared="False">
                                <local:Soundtrack_Album/>
                            </DataTemplate>
                        </TabControl.Resources>
                        <TabControl.ContextMenu>
                            <ContextMenu>
                                <MenuItem Header="Add Album" Click="contextAddAlbum_Click" />
                            </ContextMenu>
                        </TabControl.ContextMenu>
                        <TabControl.ItemContainerStyle>
                            <Style TargetType="{x:Type TabItem}">
                                <Setter Property="LayoutTransform">
                                    <Setter.Value>
                                        <RotateTransform Angle="270"/>
                                    </Setter.Value>
                                </Setter>
                            </Style>
                        </TabControl.ItemContainerStyle>
                        <TabControl.ItemTemplate>
                            <DataTemplate>
                                <TextBlock Text="Album"/>
                            </DataTemplate>
                        </TabControl.ItemTemplate>
                        <TabControl.ContentTemplate>
                            <DataTemplate>
                                <local:Soundtrack_Album/>
                            </DataTemplate>
                        </TabControl.ContentTemplate>
                    </TabControl>

然而,当我创建选项卡时,它们似乎都使用相同的UserControl实例。我选择了一个选项卡,更改了一些字段,选择了另一个选项卡,这些字段仍然是相同的。当我选择其他选项卡时,内容是否应该更改

我还注意到TabControl的项目实际上是相册,而不是TabItems。我猜这是不对的,因为我的下一个问题是试图将新创建的TabItem的DataContext设置为新创建的相册


谢谢您的帮助。

是的,所有控件都应该使用同一个控件实例,只有控件上的DataContext将被更改。关于,内容未更改,您可能会遇到绑定/控制问题。您可以发布taht代码吗?另外,项目应该来自您的ItemSource,所以相册应该是TabControl项目。