0

您能否告诉我如何在 WPF 中单击不同的菜单项标题时更改内容模板。我已经定义了可以将其作为模板的用户控件。

例如:菜单项是:Home、Players、Team。当我单击主页时,我希望在我的内容控件中弹出该特定模板,当我单击播放器时,我希望在内容控件中弹出另一个模板(播放器列表)作为模板。

如何使用 XAML 中的触发器做到这一点?

非常感谢你 :)

4

2 回答 2

2

您可以使用 aContentControl来托管您的任何内容,并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>

并且在MenuItem.Click

MyContentControl.Content = "Home"; // or "Players" or "Team"

在此示例中,我将astring用于班级ContentControl.ContentHomeViewModelPlayersViewModel

<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();
于 2012-10-23T15:01:16.310 回答
0

使用选项卡控件并在顶部放置选项卡怎么样?那样会干净得多..

编辑; 例子:

  <TabControl>
        <TabItem>
            <TabItem.Header>
                <TextBlock Text="Football header!"/>
            </TabItem.Header>
            <TabItem.Content>
                <Button Content="Push for football!"/>
            </TabItem.Content>
        </TabItem>
    </TabControl>

这也可能有帮助;http://www.switchonthecode.com/tutorials/the-wpf-tab-control-inside-and-out

于 2012-10-23T14:10:17.553 回答