Я работаю над проектом UWP на C# и xaml.
Когда вы щелкаете вне всплывающего окна, всплывающее окно закрывается, но также предотвращает нажатие на что-либо еще.
Есть ли способ заставить всплывающее окно не проглатывать событие click / pointerpressed? Так что, например, нажатие кнопки при открытом всплывающем меню закроет всплывающее окно и выполнит нажатие кнопки.
Я попытался создать производный всплывающий класс с намерением переопределить функцию OnPointerPressed (как вы можете для кнопки), поэтому я могу установить для флага Handled значение false, но, похоже, у него нет функции OnPointerPressed или чего-то подобного .





How to make a flyout not prevent clicking anything else
Вывести из Легкое игнорирование поведения. Вы можете изменить это поведение, назначив кнопку в качестве элемента сквозного ввода для всплывающего окна.
The flyout will close as a result of the light dismiss actions described above and will also pass the tap event to its designated OverlayInputPassThroughElement. Consider adopting this behavior to speed up user interactions on functionally similar items. If your app has a favorites collection and each item in the collection includes an attached flyout, it's reasonable to expect that users may want to interact with multiple flyouts in rapid succession.
<Page.Resources>
<Flyout x:Name = "TravelFlyout" x:Key = "TravelFlyout"
OverlayInputPassThroughElement = "{x:Bind FavoritesBar}">
<StackPanel>
<HyperlinkButton Content = "Washington Trails Association"/>
<HyperlinkButton Content = "Washington Cascades - Go Northwest! A Travel Guide"/>
</StackPanel>
</Flyout>
</Page.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height = "Auto"/>
</Grid.RowDefinitions>
<StackPanel x:Name = "FavoritesBar" Orientation = "Horizontal">
<HyperlinkButton x:Name = "PageLinkBtn">Bing</HyperlinkButton>
<Button x:Name = "Folder1" Content = "Travel" Flyout = "{StaticResource TravelFlyout}"/>
<Button x:Name = "Folder2" Content = "Entertainment" Click = "Folder2_Click"/>
</StackPanel>
</Grid>
назначение Window.Current.Content отлично подходит для этого. Спасибо!
Это работает, но я хочу, чтобы все получилось. Я бы назначил самый верхний контроль, но у меня нет к нему доступа. Есть какой-нибудь способ сделать это?