Search code examples
windows-phone-8windows-phonelistpickerappbar

Windows Phone open ListPicker in Fullscreen mode on AppBarButton click


I want to open a ListPicker in Fullscreen mode on ApplicationBarButton click. The ListPicker should be opened as new popup and should not be visible in the page.

This was my try:

    private void OnAppBarButtonClick(object sender, EventArgs e)
    {
        ListPicker listPicker = new ListPicker();
        listPicker.ExpansionMode = ExpansionMode.FullScreenOnly;
        this.ContentPanel.Children.Add(listPicker);

        ListPickerItem item1 = new ListPickerItem() { Content = "Item1" };
        ListPickerItem item2 = new ListPickerItem() { Content = "Item2" };
        ListPickerItem item3 = new ListPickerItem() { Content = "Item3" };
        listPicker.Items.Add(item1);
        listPicker.Items.Add(item2);
        listPicker.Items.Add(item3);

        listPicker.Open();
    }

Solution

  • You can accomplish this by defining the ListPicker in your xaml, setting the ExpansionMode to FullScreenOnly and making it Collapsed.

    <Grid x:Name="Content"/>
        <!-- other controls -->
        <toolkit:ListPicker x:Name="Picker" ExpansionMode="FullScreenOnly"
                            Visibility="Collapsed"
                            FullModeHeader="SELECT"
                            ItemsSource="{Binding MyItems}"
                            SelectionChanged="OnPickerSelectionChanged">
            <toolkit:ListPicker.FullModeItemTemplate>
                <DataTemplate>
                    <TextBlock Margin="0,20" Text="{Binding Name}"/>
                </DataTemplate>
            </toolkit:ListPicker.FullModeItemTemplate>
        </toolkit:ListPicker>
    </Grid>
    

    Then in your code, you open the picker.

    Picker.Open();
    

    This samples assumes you have a DataContext with a MyItems property that is a collection of items that has a Name property.