[英]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.