Надеюсь, вы сможете помочь мне в этом вопросе. Я разрабатываю универсальное приложение Windows (приложение для планшетов), в котором я использую всплывающие окна XAML. Когда я показываю всплывающее окно с использованием «popup.isOpen = true», и я установил высоту и ширину всплывающего окна. Проблема в том, что остальные элементы управления в окне также доступны.сделать оставшуюся часть окна недоступной
Я хочу, чтобы серый экран отображался во всплывающем окне. Когда всплывающее окно открыто, пользователь должен иметь возможность использовать элементы управления во всплывающем окне, но не фактическое окно.
Ваши предложения/рекомендации будут очень полезными.
XAML
<Page
x:Name="PageName"
x:Class="TryingVariousThings.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:TryingVariousThings"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<StackPanel>
<TextBlock Text="IsReadOnlyProperty Binding One" FontSize="29.333"></TextBlock>
<TextBlock x:Name="tbkOne" Text="{Binding Text,ElementName=tbOne}" FontSize="29.333"></TextBlock>
<TextBox x:Name="tbOne" IsReadOnly="{Binding ElementName=PageName, Path=setAsReadOnly, Mode=OneWay}" />
<Button Content="Disable editing" x:Name="bDisableEditing" Click="bDisableEditing_Click"></Button>
<Button Content="Enable editing" x:Name="bEnableEditing" Click="bEnableEditing_Click"></Button>
<Button x:Name="bCustomPopup" Content="Show Custom Popup" Click="bCustomPopup_Click"></Button>
</StackPanel>
<Popup x:Name="PopupOne"
IsOpen="False"
>
<Grid
Background="Aqua"
Width="800"
Height="400">
<Button Width="200" Content="popupButton"></Button>
</Grid>
</Popup>
</Grid>
XAML.cs
private void bCustomPopup_Click(object sender, RoutedEventArgs e)
{
PopupOne.Height = 400;
PopupOne.Width = 800;
PopupOne.IsOpen = true;
}
Popup не нравится диалог по крайней мере, с точки зрения WinRT, также вы можете 't style dialogs, поэтому мне пришлось использовать некоторые пользовательские диалоги для достижения желаемого клиента. Мы использовали библиотеку под названием Callisto, и это «CustomDialog», но мне пришлось сделать много хаков, чтобы сделать backgorund элементы управления недоступными не только для прикосновений, но и для пользователей с клавиатурой (такие клавиши, как вкладка). Помимо этого вы можете попытаться поместить сетку или другой элемент управления поверх всего экрана и показать его пользователю с темной маской для достижения эффекта серого цвета, а также уничтожить все события. Другой вариант - отключить все элементы управления. – kirotab
Привет Киротаб, спасибо за ваши предложения. Я попробовал «PageName.IsEnabled = false;» PageName - это главная страница, в которой у меня есть все элементы управления и всплывающие окна стека. это отключает доступ к другим элементам управления. Но также отключает элементы управления всплывающим окном, поскольку всплывающее окно находится внутри страницы. После отключения страницы я не смог сделать «PopupOne.isEnabled», этого свойства там не было. Есть идеи? – BRDroid
Я также пробовал, так как у меня было несколько минут, чтобы проверить, но кажется, что IsEnabled отсутствует во многих элементах управления в Universal ... Или, по крайней мере, это выглядит так. Я попытался также с 'container.IsHitTestVisible = false;' где контейнер - панель стека, но вы можете обойтись со вкладкой и щелкнуть по кнопкам сзади ... Возможно, если вы также удалите 'IsTabStop' из элементов управления, которые вы можете эмулировать поведение, но я не могу найти это свойство ... – kirotab