簡體   English   中英

更改菜單項上的Conent Control模板?

[英]Changing Conent Control template on Menu Item click?

在WPF中,單擊不同的菜單項標題時,能否告訴我如何更改內容模板? 我已經定義了用戶控件,我可以把它作為模板。

例如:菜單項包括:主頁,玩家,團隊。 當我點擊Home時,我希望彈出我的Content Control中的特定模板,當我點擊Players時,我希望另一個模板(播放器列表)以Content Control中的形式彈出作為模板。

如何在XAML中使用觸發器?

非常感謝你 :)

您可以使用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>

MenuItem.Click

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

在這個例子中,我使用ContentControl.Contentstring ,但是如果你要使用類對象,如HomeViewModelPlayersViewModel ,你的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" />

MyContentControl.Content = new HomeViewModel();

如何在頂部使用帶標簽位置的標簽控件? 這樣會更清潔..

編輯; 例:

  <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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM