繁体   English   中英

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

[英]How can I create a separate UserControl instance for each TabItem in a TabControl, using XAML?

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

我已经将“相册”创建界面分为其自己的UserControl,然后在主窗口中创建了TabControl(此后称为“编辑器”)

在主项目类中,有一个ObservableCollection of Albums,而Albums具有一个ObservableCollection of Tracks以及其他属性。

我的行动计划是将TabControl绑定到Album ObservableCollection,以便在制作新专辑时也为其创建一个新的Tab。 到目前为止,这部分工作正常。 制作新专辑时,我可以看到一个新标签,而不必显式创建一个新的TabItem并将其自己添加到TabControl。

这是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设置为新创建的Album。

谢谢你的帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM