C# 更改菜单项上的内容控件模板单击?
您能告诉我,当在WPF中单击不同的菜单项标题时,如何更改内容模板吗。我已经定义了用户控件,可以将其作为模板 例如:菜单项包括:主场、球员、球队。当我点击主页时,我希望内容控件中的特定模板弹出,当我点击播放器时,我希望另一个模板(播放器列表)作为模板弹出内容控件 如何在XAML中使用触发器实现这一点C# 更改菜单项上的内容控件模板单击?,c#,wpf,menuitem,contentcontrol,C#,Wpf,Menuitem,Contentcontrol,您能告诉我,当在WPF中单击不同的菜单项标题时,如何更改内容模板吗。我已经定义了用户控件,可以将其作为模板 例如:菜单项包括:主场、球员、球队。当我点击主页时,我希望内容控件中的特定模板弹出,当我点击播放器时,我希望另一个模板(播放器列表)作为模板弹出内容控件 如何在XAML中使用触发器实现这一点 非常感谢:)使用选项卡位于顶部的选项卡控件如何?那样会干净得多 编辑;例如: <TabControl> <TabItem> <
非常感谢:)使用选项卡位于顶部的选项卡控件如何?那样会干净得多 编辑;例如:
<TabControl>
<TabItem>
<TabItem.Header>
<TextBlock Text="Football header!"/>
</TabItem.Header>
<TabItem.Content>
<Button Content="Push for football!"/>
</TabItem.Content>
</TabItem>
</TabControl>
这可能也有帮助 您可以使用
ContentControl
托管任何内容,并根据您想要绘制内容的方式设置ContentControl.ContentTemplate
作为一个非常基本的例子
<ContentControl x:Name="MyContentControl">
<ContentControl.Style>
<Style TargetType="{x:Type ContentControl}">
<Style.Triggers>
<DataTrigger Binding="{Binding }" Value="Home">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<local:MyHomeUsercontrol />
</DataTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
<DataTrigger Binding="{Binding }" Value="Players">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<local:MyPlayersUsercontrol />
</DataTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
<DataTrigger Binding="{Binding }" Value="Team">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<local:MyTeamUsercontrol />
</DataTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
</Style>
</ContentControl.Style>
</ContentControl>
在本例中,我将字符串用于ContentControl.Content
,但是如果要使用类对象,例如HomeViewModel
或PlayerViewModel
,可以简化XAML以使用隐式数据模板,这些模板在WPF尝试绘制特定类时自动使用
<Window.Resources>
<DataTemplate DataType="{x:Type HomeViewModel}">
<local:MyHomeUserControl />
</DataTemplate>
<DataTemplate DataType="{x:Type PlayersViewModel}">
<local:MyPlayersUserControl />
</DataTemplate>
<DataTemplate DataType="{x:Type TeamViewmModel}">
<local:MyTeamUserControl />
</DataTemplate>
</Window.Resources>
<ContentControl x:Name="MyContentControl" />
那么,在tab项中我定义了模板?正确,在您的tab项中,您将为标题放置内容,如果需要,您还可以使用TabHeaderTemplate设置标题样式。
<Window.Resources>
<DataTemplate DataType="{x:Type HomeViewModel}">
<local:MyHomeUserControl />
</DataTemplate>
<DataTemplate DataType="{x:Type PlayersViewModel}">
<local:MyPlayersUserControl />
</DataTemplate>
<DataTemplate DataType="{x:Type TeamViewmModel}">
<local:MyTeamUserControl />
</DataTemplate>
</Window.Resources>
<ContentControl x:Name="MyContentControl" />
MyContentControl.Content = new HomeViewModel();