Всплывающее окно Windows 10 mobile (UWP) с блокировкой средства выбора календаря на экране

#c# #xml #uwp

#c# #xml #uwp

Вопрос:

Я создал всплывающее окно для моего appbarbutton с одним текстовым полем и элементом управления для выбора даты ‘CalendarDatePicker’.

Проблема в том, что когда я выбираю дату из элемента управления, отображается календарь, и мое всплывающее окно исчезает. Я думал о блокировке моего всплывающего окна, но я не знаю, как это сделать. Оно исчезает, даже когда я нажимаю вне всплывающего окна. Возможно ли это?

 <AppBarButton x:Name="btnAppAddEvent" Icon="Add" Label="Dodaj"  >
            <AppBarButton.Flyout>
                <Flyout x:Name="flAdd" Placement="Full" >
                    <Flyout.FlyoutPresenterStyle>
                        <Style TargetType="FlyoutPresenter">
                            <Setter Property="MaxHeight" Value="350"></Setter>
                            <Setter Property="MaxWidth" Value="300"></Setter>
                            <Setter Property="Background" Value="#FF8096BD"></Setter>
                        </Style>
                    </Flyout.FlyoutPresenterStyle>

                    <StackPanel Height="300"  >
                        <TextBox x:Name="txtNameAdd"  FontSize="23"  Height="40"></TextBox>

                        <CalendarDatePicker HorizontalAlignment="Center"  x:Name="calendar" Margin="0,30,0,0" />
                        <AppBarButton x:Name="btnAddEv" BorderBrush="Black" HorizontalAlignment="Center"  Icon="Accept" Click="btnAddEv_Click"  Margin="0,20,0,0"></AppBarButton>
                        <TextBlock x:Name="txtMess2" HorizontalAlignment="Center"  FontSize="15" Foreground="Red" Margin="0,10,0,0"  ></TextBlock>

                    </StackPanel>
                </Flyout>
            </AppBarButton.Flyout>
        </AppBarButton>
  

Комментарии:

1. Я испытывал такое же поведение с тем же образцом. Я не думаю, что это возможно сделать с помощью всплывающего окна. Я думаю, что я использовал ContentDialog. Вы также можете попробовать всплывающее окно

Ответ №1:

Проблема в том, что когда я выбираю дату из элемента управления, отображается календарь, и мое всплывающее окно исчезает.

Я тестировал ваш код на своей стороне. В новейшей сборке 14393 Windows 10 SDK эта проблема больше не существует. Когда мы выбираем данные из элемента управления календарем, который находится внутри Flyout элемента управления, они Flyout не исчезнут. Но в предыдущем SDK, таком как сборка 10586, ваша проблема существовала, и, похоже, в настоящее время мы не можем изменить ее с помощью настройки.

Оно исчезает, даже когда я нажимаю вне всплывающего окна.

Для этого сценария это специально. Согласно описанию Flyout элемента управления:

Представляет собой элемент управления, который отображает упрощенный пользовательский интерфейс, который либо содержит информацию, либо требует взаимодействия с пользователем. В отличие от диалогового окна, всплывающее окно можно легко отключить, щелкнув за его пределами, нажав кнопку «Назад» на устройстве или клавишу «Esc».

Flyout элемент управления предназначен для отображения облегченного пользовательского интерфейса и может быть легко отключен. Если вы не хотите, чтобы пользовательский интерфейс отключался нажатием снаружи, вы можете попробовать другие всплывающие элементы управления, такие как элемент управления ContentDialog. Для получения более подробной информации о ContentDialog, пожалуйста, обратитесь к официальному образцу.