dissabte, 23 de juliol de 2011

Silverlight Application Navigation "Menú"

Al fer una nova solució Silverlight Application Navigation l'IDE ens prepara un projecte amb un petit menú amb dues Opcions: Home i About.

Si la nostra aplicació no té gaires 'pages' en podem tenir prou, però si en té moltes llavors necessitem un menú.

Una manera fàcil de fer un menú és amb un TabControl:

Per fer-ho cal:

A la MainPage.xaml posar els HiperLinkButtons dins un TabControl:


Modificar el codi MainPage.xalm.vb per tal que busqui els HyperLinkButtons dins el TabControl:


Private Sub ContentFrame_Navigated(ByVal sender As Object, ByVal e As NavigationEventArgs) Handles ContentFrame.Navigated
        Dim i = TabItemTaulesMestre.Content


        'Poso tots els links en una única llista
        Dim uiList As New List(Of UIElement)
        For Each tabItem In TabControlMenu.Items
            Dim tab = DirectCast(tabItem, TabItem)
            Dim GridItem = DirectCast(tab.Content, System.Windows.Controls.Grid)
            Dim linkStackPanelItem = DirectCast(GridItem.Children.Item(0), System.Windows.Controls.StackPanel)
            For Each child As UIElement In linkStackPanelItem.Children
                uiList.Add(child)
            Next
        Next


        For Each child As UIElement In uiList
            Dim hb As HyperlinkButton = TryCast(child, HyperlinkButton)
            If hb IsNot Nothing AndAlso hb.NavigateUri IsNot Nothing Then
                If hb.NavigateUri = e.Uri Then
                    VisualStateManager.GoToState(hb, "ActiveLink", True)
                Else
                    VisualStateManager.GoToState(hb, "InactiveLink", True)
                End If
            End If
        Next
    End Sub




Algú coneix una alternativa millor?
Penseu que aquestes estructures clàssiques de menús han de ser substituïdes per un altre tipus de navegació?

Cap comentari:

Publica un comentari a l'entrada