UWP, как взаимодействовать с тем, какое значение canvas.zindex ниже среди двух холстов один над другим? - PullRequest
0 голосов
/ 05 мая 2020

У меня есть родительский холст. Этот родительский холст имеет два дочерних холста Один над другим с одинаковой высотой и шириной. У дочернего холста Fisrt есть zindex = 0, а у второго дочернего холста - zindex = 1, у второго дочернего холста много дочерних изображений (UIElement). Я хочу, мой второй холст должен иметь более высокий zindex. У меня есть событие PointerPressed для первого холста, второго холста и для каждого изображения также. Я хочу, если я нажимаю на изображение, оно запускает событие PointerPressed изображения, и если я нажимаю на холсте, где изображения нет, оно должно запустить первое событие canvas pointerPressed, zindex которого равен 0. Я не знаю, как этого добиться ??

Мой код XAML:

<Canvas x:Name="MyCanvas">
    <Canvas x:Name="FirstCanvas" Canvas.ZIndex="0" PointerPressed="FirstCanvas_PointerPressed" Width="1500" Height="700">
        <!--Child Elements-->
    </Canvas>
    <Canvas x:Name="SecondCanvas" Canvas.ZIndex="1" PointerPressed="SecondCanvas_PointerPressed" Width="1500" Height="700">
        <Image x:Name="FistImage" Source="image1.jpg" Width="100" Height="100" PointerPressed="FistImage_PointerPressed" Canvas.Left="0" Canvas.Top="0"></Image>
        <Image x:Name="SecondImageImage" Source="image2.jpg" Width="100" Height="100" PointerPressed="SecondImageImage_PointerPressed" Canvas.Left="200" Canvas.Top="200"></Image>
    </Canvas>
</Canvas>

Мой C# Код:

    private void FirstCanvas_PointerPressed(object sender, PointerRoutedEventArgs e)
    {

    }

    private void SecondCanvas_PointerPressed(object sender, PointerRoutedEventArgs e)
    {

    }

    private void FistImage_PointerPressed(object sender, PointerRoutedEventArgs e)
    {

    }

    private void SecondImageImage_PointerPressed(object sender, PointerRoutedEventArgs e)
    {

    }

1 Ответ

1 голос
/ 05 мая 2020

Я понимаю, что вы имеете в виду, вот некоторые пояснения:

В предоставленном вами коде цвет фона Canvas прозрачный. Для этого прозрачного контейнерного элемента управления указатель может проникать. Таким образом, он не будет запускать событие PointerPressed.

Если вы хотите, чтобы он обрабатывал событие указателя, установите тот же цвет фона, что и страница, например:

<Canvas x:Name="FirstCanvas" Canvas.ZIndex="0" 
        PointerPressed="FirstCanvas_PointerPressed" Width="1500" Height="700"
        Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <!--Child Elements-->
</Canvas>

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

<Canvas x:Name="MyCanvas">
    <Canvas.Resources>
        <SolidColorBrush x:Key="LowOpacityBackground" Color="White" Opacity="0.01"/>
    </Canvas.Resources>
    <Canvas ...
            Background="{ThemeResource LowOpacityBackground}">
        <!--Child Elements-->
    </Canvas>
</Canvas>

Короче говоря, цвет фона не может быть полностью прозрачным.

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...