Windows 8 使用flipView和标题的用户控件在WinRT应用程序中实现Pivot

Windows 8 使用flipView和标题的用户控件在WinRT应用程序中实现Pivot,windows-8,windows-runtime,flipview,Windows 8,Windows Runtime,Flipview,我想实现仅在WP8中可用的pivot控件的行为,因此我使用flipView,对于标题,我使用用户控件,在其中放置模拟标题的按钮列表。 当我从flipViewItem传递到另一个项目时,我需要突出显示相应的按钮标题! 请帮忙 <ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Hidden" > <ListView x:Name="lstTabs" Selec

我想实现仅在WP8中可用的pivot控件的行为,因此我使用flipView,对于标题,我使用用户控件,在其中放置模拟标题的按钮列表。 当我从flipViewItem传递到另一个项目时,我需要突出显示相应的按钮标题! 请帮忙

<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Hidden" >
       <ListView x:Name="lstTabs" SelectionMode="Single"
SelectedIndex={Binding SelectedIndex,ElementName=FVFiche,Mode=TwoWay}>

            <ListView.ItemsPanel>
                <ItemsPanelTemplate>
                    <WrapGrid Orientation="Horizontal" HorizontalChildrenAlignment="left"/>
                </ItemsPanelTemplate>
            </ListView.ItemsPanel>
            <ListView.ItemContainerStyle>
                <Style TargetType="ListViewItem">
                    <Setter Property="Padding" Value="0"/>
                    <Setter Property="Margin" Value="0"/>
                    <Setter Property="FontSize" Value="32"/>
                    <Setter Property="Background" Value="#FF141414"/>
                    <Setter Property="BorderBrush" Value="Black"/>
                </Style>
            </ListView.ItemContainerStyle>
        </ListView>
    </ScrollViewer>
    <FlipView x:Name="FVFiche" Grid.Row="1" />
最后,我选择了这个更简单的解决方案:

<Grid x:Name="RootLayout" Background="#FF141414"  >
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>
    <ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Hidden" >
        <ListView x:Name="lstTabs" SelectionMode="Single" SelectedIndex="{Binding SelectedIndex, ElementName=FVFiche, Mode=TwoWay}">
            <ListView.ItemsPanel>
                <ItemsPanelTemplate>
                    <WrapGrid Orientation="Horizontal" HorizontalChildrenAlignment="left"/>
                </ItemsPanelTemplate>
            </ListView.ItemsPanel>
            <ListView.ItemContainerStyle>
                <Style TargetType="ListViewItem">
                    <Setter Property="Padding" Value="0"/>
                    <Setter Property="Margin" Value="0"/>
                    <Setter Property="FontSize" Value="32"/>
                    <Setter Property="Background" Value="#FF141414"/>
                    <Setter Property="BorderBrush" Value="Black"/>
                </Style>
            </ListView.ItemContainerStyle>
        </ListView>
    </ScrollViewer>
    <FlipView x:Name="FVFiche" Grid.Row="1" />
</Grid>

最后,我选择了这个解决方案,它更容易查看

,以防其他人看到这篇文章,这里有一个示例,从2014年2月4日起,您可以在Windows开发中心获得如何在VS 2013中做到这一点

代码隐藏:

/// <summary>
/// Invoked when this page is about to be displayed in a Frame.
/// </summary>
/// <param name="e">Event data that describes how this page was reached.  The Parameter
/// property is typically used to configure the page.</param>
protected override void OnNavigatedTo(NavigationEventArgs e)
{
    var sampleData = new Controls_FlipView.Data.SampleDataSource();
    FlipView4.ItemsSource = sampleData.Items;
    ContextControl.ItemsSource = sampleData.Items;
    ContextControl.SelectionChanged += ContextControl_SelectionChanged;
}
样本数据:

/// <summary>
/// Creates a collection of groups and items with hard-coded content.
/// </summary>
public sealed class SampleDataSource
{
private ObservableCollection<object> _items = new ObservableCollection<object>();
public ObservableCollection<object> Items
{
    get { return this._items; }
}

public SampleDataSource()
{
    Items.Add(new SampleDataItem("Cliff",
            "item",
            "Assets/Cliff.jpg"
            ));
    Items.Add(new SampleDataItem("Grapes",
            "item",
            "Assets/Grapes.jpg"
            ));
    Items.Add(new SampleDataItem("Rainier",
            "item",
            "Assets/Rainier.jpg"
            ));
    Items.Add(new SampleDataItem("Sunset",
            "item",
            "Assets/Sunset.jpg"
            ));
    Items.Add(new SampleDataItem("Valley",
            "item",
            "Assets/Valley.jpg"
            ));
}
}

到目前为止,您试图突出显示标题的内容是什么?显示一些代码。我不知道如何实现它:!我想当我更改flipViewItem时,我必须从父页面向用户控件发送一些事件,以突出显示相应的按钮@XYROIDW。虽然此链接可以回答问题,但最好在此处包含答案的基本部分,并提供链接供参考。如果链接页面发生更改,则“仅链接”答案可能会无效。@David修复此问题-1,因为我已根据您的请求添加了其他信息!
/// <summary>
/// Creates a collection of groups and items with hard-coded content.
/// </summary>
public sealed class SampleDataSource
{
private ObservableCollection<object> _items = new ObservableCollection<object>();
public ObservableCollection<object> Items
{
    get { return this._items; }
}

public SampleDataSource()
{
    Items.Add(new SampleDataItem("Cliff",
            "item",
            "Assets/Cliff.jpg"
            ));
    Items.Add(new SampleDataItem("Grapes",
            "item",
            "Assets/Grapes.jpg"
            ));
    Items.Add(new SampleDataItem("Rainier",
            "item",
            "Assets/Rainier.jpg"
            ));
    Items.Add(new SampleDataItem("Sunset",
            "item",
            "Assets/Sunset.jpg"
            ));
    Items.Add(new SampleDataItem("Valley",
            "item",
            "Assets/Valley.jpg"
            ));
}
}