如何在Windows Phone 8中创建选项卡

时间:2013-08-21 08:03:35

标签: xaml windows-phone-8 windows-phone

我是windows phone 8 developpement的初学者,我需要创建一个标签系统(有点像Android上的slidingDrawer)。 我自己解释一下,我已经实现了一个xaml接口,如下所示:

http://img15.hostingpics.net/pics/974529onglet.png

此界面的代码:

<StackPanel  VerticalAlignment="top" Orientation="Horizontal" Height="402" Width="480">
            <StackPanel Width="161" Margin="0,10,0,0" >
                <StackPanel Height="50" Background="DarkCyan">
                    <TextBlock Height="50" Text="Qualité orale" Foreground="White"  />
                </StackPanel>
                <StackPanel Height="50" >

                    <TextBlock Text="Compréhension" Foreground="White" />
                </StackPanel>
                <StackPanel Height="50">
                    <TextBlock Text="Général" Foreground="White"/>
                </StackPanel>
                <StackPanel Height="50">
                    <TextBlock Text="Fichiers relatifs" Foreground="White"/>
                </StackPanel>
                <StackPanel Height="50">
                    <TextBlock Text="Le conférencier" Foreground="White"/>
                </StackPanel>
                <StackPanel Height="50">
                    <TextBlock Text="Questions" Foreground="White"/>
                </StackPanel>

            </StackPanel>

我想在这里做的是当用户触摸堆叠面板时,堆叠面板会改变颜色,右边的灰色内容也会改变。

你能帮我解决问题吗?

提前谢谢

2 个答案:

答案 0 :(得分:0)

只需将Tap属性添加到TextBlocks并处理后面代码中的事件。

例如:

<TextBlock Text="Questions" 
           Foreground="White"
           Tap="MyEventHandler"
/>

然后,您可能希望将Name属性赋予StackPanels,以便您可以在代码中引用它。像这样:

<StackPanel Height="50" Name="QuestionsStackPanel">
       <TextBlock Text="Questions" Foreground="White"/>
</StackPanel>

在代码隐藏文件中,visual studio可以自动生成方法存根,如果不是,它应该是这样的。

private void MyEventHandler(object sender, System.Windows.Input.GestureEventArgs e)
{
     //Make changes here
     QuestionsStackPanel.Background = Colors.Blue
}

从这里,您可以更改特定标签的颜色和您提到的灰色区域。

答案 1 :(得分:0)

首先,仅仅为了信息,“android选项卡界面”与“UI(metro)”界面不一致。这不是非常重要,有关“Ui设计风格的更多信息,您可以here为您的应用设计样式:d

对于您的问题,在您的Xaml中,您可以添加一个事件来检测点击(或“TextBlock”中的其他事件。

例如,您可以在“Code.xaml”中的所有按钮中添加“点按事件”(另外,您可以添加“名称”属性以便在以后轻松查找您的控件):

<StackPanel  VerticalAlignment="top" Orientation="Horizontal" Height="402" Width="480">
    <StackPanel Name ="Global_Onglets" Width="161" Margin="0,10,0,0" >
        <StackPanel Height="50" Background="DarkCyan">
            <TextBlock Height="50" 
                       Text="Qualité orale" 
                       Name="TextBlock_Quality"
                       Tap="MyPersonalEvent"
                       Foreground="White"  />
        </StackPanel>
        <StackPanel Height="50" >
            <TextBlock Text="Compréhension" 
                       Name="TextBlock_Comprehension"
                       Tap="MyPersonalEvent"
                       Foreground="White" />
        </StackPanel>
        <StackPanel Height="50">
            <TextBlock Text="Général" 
                       Name="TextBlock_General"
                       Tap="MyPersonalEvent"
                       Foreground="White"/>
        </StackPanel>
    </StackPanel>
</StackPanel>

并且,在“code.cs”中,您可以创建事件方法:

/// <summary>
/// Event handler called by Textblock Tap.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void MyPersonalEvent(object sender, EventArgs e)
{
    // Get, the current textblock where called the event.
    TextBlock CurrentTextBlock = sender as TextBlock;

    // Check just the clicked textBlock, for attributes specific colors..
    foreach (TextBlock textblock in Global_Onglets.Children)
    {
        if (textblock == sender)
        {
            // Attribute secific color for this tap textblock;

        }
       // Attribute a "normal" color for alls others textBlock..
    }
}

您可以获得有关活动here !!

的更多详情

另外,我看到你用法语创建你的应用程序。但是,如果你想要一本关于“本地化你的应用程序”的精彩教程here,你可以轻松将你的应用程序本地化为其他语言(以及其他国家的distrube ...)...更好的思考之前,以后的任何责任。 :d