Search code examples
c#windows-10-universalflyout

How to open a flyout from right side of screen in Windows 10 UWP?


I am working on Windows 10 App and I want to open a flyout from the right side of the screen when the image is tapped. I can't use SplitView as I am already using it for some other purpose.Its visibility should be Collapsed first and when to click on the image then it should be Visible.Also, I don't to use Navigation/Settings Flyout. I want to achieve as the following

Right Side Menu


Solution

  • Its visibility should be Collapsed first and when to click on the image then it should be Visible.

    You can set your layout for example like this:

    <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
        <GridView ItemsSource="{x:Bind WaresCollection}">
            <GridView.ItemTemplate>
                <DataTemplate>
                    <Image Source="{Binding WaresImage}" Tapped="Image_Tapped" Width="200" Height="300" />
                </DataTemplate>
            </GridView.ItemTemplate>
        </GridView>
        <Grid x:Name="FilterGrid" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Visibility="Collapsed">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*" />
                <ColumnDefinition Width="*" />
            </Grid.ColumnDefinitions>
            <StackPanel Background="#33000000" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" />
            <Grid Grid.Column="1" Padding="15" Background="White">
                <Grid.RowDefinitions>
                    <RowDefinition Height="*" />
                    <RowDefinition Height="5*" />
                    <RowDefinition Height="2*" />
                </Grid.RowDefinitions>
                <TextBlock Text="Search Filter" FontSize="30" VerticalAlignment="Center" HorizontalAlignment="Left" />
                <Grid Grid.Row="1">
                </Grid>
                <Grid Grid.Row="2">
                    <Button Content="DONE" Background="Yellow" VerticalAlignment="Center" HorizontalAlignment="Left" Click="Done_Button_Click" />
                    <Button Content="RESET" Background="Yellow" VerticalAlignment="Center" HorizontalAlignment="Right" />
                </Grid>
            </Grid>
        </Grid>
    </Grid>
    

    code behind:

    private ObservableCollection<Wares> WaresCollection = new ObservableCollection<Wares>();
    
    protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        WaresCollection.Clear();
        WaresCollection.Add(new Wares { WaresImage = "Assets/miao4.jpg" });
        WaresCollection.Add(new Wares { WaresImage = "Assets/miao5.jpg" });
        WaresCollection.Add(new Wares { WaresImage = "Assets/miao6.jpg" });
        WaresCollection.Add(new Wares { WaresImage = "Assets/miao4.jpg" });
        WaresCollection.Add(new Wares { WaresImage = "Assets/miao5.jpg" });
        WaresCollection.Add(new Wares { WaresImage = "Assets/miao6.jpg" });
        WaresCollection.Add(new Wares { WaresImage = "Assets/miao4.jpg" });
        WaresCollection.Add(new Wares { WaresImage = "Assets/miao5.jpg" });
        WaresCollection.Add(new Wares { WaresImage = "Assets/miao6.jpg" });
        WaresCollection.Add(new Wares { WaresImage = "Assets/miao4.jpg" });
        WaresCollection.Add(new Wares { WaresImage = "Assets/miao5.jpg" });
        WaresCollection.Add(new Wares { WaresImage = "Assets/miao6.jpg" });
        WaresCollection.Add(new Wares { WaresImage = "Assets/miao4.jpg" });
        WaresCollection.Add(new Wares { WaresImage = "Assets/miao5.jpg" });
        WaresCollection.Add(new Wares { WaresImage = "Assets/miao6.jpg" });
    }
    
    private void Image_Tapped(object sender, TappedRoutedEventArgs e)
    {
        FilterGrid.Visibility = Visibility.Visible;
    }
    
    private void Done_Button_Click(object sender, RoutedEventArgs e)
    {
        FilterGrid.Visibility = Visibility.Collapsed;
    }
    

    And the Wares class:

    public class Wares
    {
        public string WaresImage { get; set; }
    }
    

    Here is the rendering image of this demo: enter image description here