Windows runtime 使用FlipView在Metro应用程序中创建TabControl

Windows runtime 使用FlipView在Metro应用程序中创建TabControl,windows-runtime,windows-store-apps,winrt-xaml,tabcontrol,flipview,Windows Runtime,Windows Store Apps,Winrt Xaml,Tabcontrol,Flipview,我目前正在创建一个Metro风格的应用程序,希望使用FlipView控件像WPF和winforms中的选项卡控件一样工作,有人能帮我吗?您可以将FlipViewItems放在FlipView中,就像将TabItems放在TabControl中一样。要添加选项卡-您可以使用带有textRadioButtons样式的StackPanel,这些按钮的检查状态与FlipView选择状态同步。或者,您可以为标题栏设置一个样式丰富的ListView。我通过编辑flipviewitem模板并使其视图类似于所需

我目前正在创建一个Metro风格的应用程序,希望使用FlipView控件像WPF和winforms中的选项卡控件一样工作,有人能帮我吗?

您可以将
FlipViewItems
放在
FlipView
中,就像将
TabItems
放在
TabControl
中一样。要添加选项卡-您可以使用带有
textRadioButtons样式的
StackPanel
,这些按钮的检查状态与
FlipView
选择状态同步。或者,您可以为标题栏设置一个样式丰富的
ListView

我通过编辑flipviewitem模板并使其视图类似于所需的选项卡页面视图来解决此问题。然后我在每个项目的顶部添加了一个按钮来激活它。

我们在WP8.1中没有选项卡控件,但我们可以使用FlipView进行自定义。翻转视图有一个属性选择索引,因此我们可以设置所需的视图

创建一个xaml页面,例如MainPage.xaml

用于制表符标题

<Border BorderThickness="0,0,0,1" BorderBrush="White" >
        <Grid Grid.Row="0" Background="Black" x:Name="navigateHead"   >

        <TextBlock x:Name="appbarSports" Text="Sports"  Tapped="appbarSports_Tapped"  TextAlignment="Center" Width="80" Margin="0,34,320,7"  />
        <TextBlock x:Name="appbarCars" Text="Cars"  Tapped="appbarCars_Tapped" Margin="160,34,160,7" TextAlignment="Center" />
        <TextBlock x:Name="appbarHomes" Text="Homes"  Tapped="appbarHomes_Tapped" Margin="80,34,240,7" TextAlignment="Center"  />

            <Image x:Name="imgLine0" Source="ms-appx:///Images/white.png" Width="80" Height="3" Stretch="Fill"  Margin="0,55,320,1"  ></Image>
            <Image x:Name="imgLine1" Source="ms-appx:///Images/white.png" Width="80" Height="3" Stretch="Fill"  Margin="81,55,239,1" Visibility="Collapsed" />
            <Image x:Name="imgLine2" Source="ms-appx:///Images/white.png" Width="80" Height="3" Stretch="Fill"  Margin="162,55,158,1" Visibility="Collapsed"  />


        </Grid>
    </Border>
此方法将绑定

public void GetData()
    {
     listOfSports = new List<Sports>();
        for (int i = 1; i < 9; i++)
        {
            listOfSports.Add(new Sports() { SportsImage = @"ms-appx:///Images/Sports/image" + i.ToString() + ".jpg" });
        }

        listViewForSports.ItemsSource = listOfSports;

       listOfCars = new List<Cars>();
        for (int i = 1; i < 14; i++)
        {
            listOfCars.Add(new Cars() { CarsImage = @"ms-appx:///Images/Cars/image" + i.ToString() + ".jpg" });
        }

        listViewForCars.ItemsSource = listOfCars;

      listOfHomes = new List<Homes>();
        for (int i = 1; i < 9; i++)
        {
            listOfHomes.Add(new Homes() { HomesImage = @"ms-appx:///Images/Homes/image" + i.ToString() + ".jpg" });
        }

        listViewForHomes.ItemsSource = listOfHomes;

    }
    public class Cars
    {
      public  string CarsImage { get; set; }
    }
    public class Sports
    {
        public string SportsImage { get; set; }
    }
    public class Homes
    {
        public string HomesImage { get; set; }
    }`

 I did with tap event to navigation withing flip view` private void appbarSports_Tapped(object sender, TappedRoutedEventArgs e)
    {
       // TextBlock a = sender as TextBlock;
       // imgLine0.Margin = new Thickness(a.Margin.Left, 55, a.Margin.Right, 1);
        flipControl.SelectedIndex = 0;
        method(0);
    }

    private void appbarCars_Tapped(object sender, TappedRoutedEventArgs e)
    {

      //  TextBlock a = sender as TextBlock;
        //imgLine0.Margin = new Thickness(a.Margin.Left, 55, a.Margin.Right, 1);
        flipControl.SelectedIndex = 2;
        method(2);

    }

    private void appbarHomes_Tapped(object sender, TappedRoutedEventArgs e)
    {
       // TextBlock a = sender as TextBlock;
      // imgLine0.Margin = new Thickness(a.Margin.Left, 55, a.Margin.Right, 1);

        flipControl.SelectedIndex = 1;
        method(1);


    }
此方法()是更改imageLine位置的完整帮助

 public void method(int a)
    {
        if (imgLine0 != null)
        {
            switch (a)
            {
                case 0:

                    imgLine0.Visibility = Visibility.Visible;

                    imgLine1.Visibility = Visibility.Collapsed;
                    imgLine2.Visibility = Visibility.Collapsed;
                    break;
                case 1:

                    imgLine0.Visibility = Visibility.Collapsed;

                    imgLine1.Visibility = Visibility.Visible;
                    imgLine2.Visibility = Visibility.Collapsed;
                    break;
                case 2:
                    imgLine0.Visibility = Visibility.Collapsed;

                    imgLine1.Visibility = Visibility.Collapsed;
                    imgLine2.Visibility = Visibility.Visible;
                    break;
            }
        }
    }   

也许有人能帮你。这能回答你的问题吗?还是你还有其他问题
protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        flipControl.SelectedIndex = 0;
        // TODO: Prepare page for display here.

        // TODO: If your application contains multiple pages, ensure that you are
        // handling the hardware Back button by registering for the
        // Windows.Phone.UI.Input.HardwareButtons.BackPressed event.
        // If you are using the NavigationHelper provided by some templates,
        // this event is handled for you.
        GetData();
    }
public void GetData()
    {
     listOfSports = new List<Sports>();
        for (int i = 1; i < 9; i++)
        {
            listOfSports.Add(new Sports() { SportsImage = @"ms-appx:///Images/Sports/image" + i.ToString() + ".jpg" });
        }

        listViewForSports.ItemsSource = listOfSports;

       listOfCars = new List<Cars>();
        for (int i = 1; i < 14; i++)
        {
            listOfCars.Add(new Cars() { CarsImage = @"ms-appx:///Images/Cars/image" + i.ToString() + ".jpg" });
        }

        listViewForCars.ItemsSource = listOfCars;

      listOfHomes = new List<Homes>();
        for (int i = 1; i < 9; i++)
        {
            listOfHomes.Add(new Homes() { HomesImage = @"ms-appx:///Images/Homes/image" + i.ToString() + ".jpg" });
        }

        listViewForHomes.ItemsSource = listOfHomes;

    }
    public class Cars
    {
      public  string CarsImage { get; set; }
    }
    public class Sports
    {
        public string SportsImage { get; set; }
    }
    public class Homes
    {
        public string HomesImage { get; set; }
    }`

 I did with tap event to navigation withing flip view` private void appbarSports_Tapped(object sender, TappedRoutedEventArgs e)
    {
       // TextBlock a = sender as TextBlock;
       // imgLine0.Margin = new Thickness(a.Margin.Left, 55, a.Margin.Right, 1);
        flipControl.SelectedIndex = 0;
        method(0);
    }

    private void appbarCars_Tapped(object sender, TappedRoutedEventArgs e)
    {

      //  TextBlock a = sender as TextBlock;
        //imgLine0.Margin = new Thickness(a.Margin.Left, 55, a.Margin.Right, 1);
        flipControl.SelectedIndex = 2;
        method(2);

    }

    private void appbarHomes_Tapped(object sender, TappedRoutedEventArgs e)
    {
       // TextBlock a = sender as TextBlock;
      // imgLine0.Margin = new Thickness(a.Margin.Left, 55, a.Margin.Right, 1);

        flipControl.SelectedIndex = 1;
        method(1);


    }
private void flipControl_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {

        FlipView viewControl = sender as FlipView;

        int a = viewControl.SelectedIndex;
       method(a);

    }
 public void method(int a)
    {
        if (imgLine0 != null)
        {
            switch (a)
            {
                case 0:

                    imgLine0.Visibility = Visibility.Visible;

                    imgLine1.Visibility = Visibility.Collapsed;
                    imgLine2.Visibility = Visibility.Collapsed;
                    break;
                case 1:

                    imgLine0.Visibility = Visibility.Collapsed;

                    imgLine1.Visibility = Visibility.Visible;
                    imgLine2.Visibility = Visibility.Collapsed;
                    break;
                case 2:
                    imgLine0.Visibility = Visibility.Collapsed;

                    imgLine1.Visibility = Visibility.Collapsed;
                    imgLine2.Visibility = Visibility.Visible;
                    break;
            }
        }
    }