Полупрозрачный слой на экране приложения UWP - PullRequest
0 голосов
/ 20 сентября 2018

Есть ли способ добавить полупрозрачный слой для приложения в UWP?В обычном .NET есть возможность, но в UWP я не могу ее найти.

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

Спасибо всем!

1 Ответ

0 голосов
/ 20 сентября 2018

Я предполагаю, что вам нужно какое-то поведение BlockUI / UnBlockUI, не уверен, что для этого есть сторонняя организация, но вы можете проявить творческий подход, чтобы добиться этого.

Используя преимущество ZIndex , Непрозрачность , DependencyProperty и некоторые обработка событий , вы можете достичь этого.

xaml

<Page x:Name="root"
     x:Class="App1.MainPage"
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
      mc:Ignorable="d"
      Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"
      d:DesignHeight="450" d:DesignWidth="800">
    <Canvas Background="AliceBlue">
        <Rectangle  Canvas.Left="30" Canvas.ZIndex="{Binding BlockerZIndex, ElementName=root}"  Width="180" Height="200" Fill="White" Opacity="0.5"/>
        <Button Canvas.ZIndex="1" Canvas.Left="30" Canvas.Top="70" Content="Send Email" Width="150" Height="50" Background="Blue" Foreground="Black" />
        <Button Canvas.ZIndex="1"  Canvas.Left="30" Canvas.Top="140" Content="Print Receipt" Width="150" Height="50" Background="Blue" Foreground="Black" />
        <Button x:Name="BlockUnBlockUIButton" Canvas.Left="30" Canvas.ZIndex="1" Canvas.Top="210" Width="150" Height="50" Background="Blue" Foreground="Black" Click="BlockUnBlockUIButton_OnClick" >
            <TextBlock Text="Block/UnBlock UI" ToolTipService.ToolTip="Block/Unblock UI"/>
        </Button>
    </Canvas>
</Page>

Кодовый код

using Windows.UI.Xaml;

namespace App1
{
    public sealed partial class MainPage
    {
        public MainPage()
        {
            InitializeComponent();
        }

        public static readonly DependencyProperty BlockerZIndexProperty =
            DependencyProperty.Register(
                nameof(BlockerZIndex),
                typeof(int),
                typeof(MainPage),
                new PropertyMetadata(2));

        public int BlockerZIndex
        {
            get => (int)GetValue(BlockerZIndexProperty);
            set => SetValue(BlockerZIndexProperty, value);
        }

        private void BlockUnBlockUIButton_OnClick(object sender, RoutedEventArgs e)
        {
            BlockerZIndex = BlockerZIndex == 1 ? 2 : 1;
        }
    }
}

enter image description here


enter image description here

...