Xaml 表单:当顶部有对象(如标签和其他图像)时捕捉点击按钮的最佳方式

Xaml 表单:当顶部有对象(如标签和其他图像)时捕捉点击按钮的最佳方式,xaml,xamarin.forms,Xaml,Xamarin.forms,在我的应用程序中,我有以下布局: 它是一个图形,ontop是一个标签,ontop是另一个图形(也有另一个标签)。现在我仍然希望人们能够点击按钮。这已经导致了标签的发布。如果你点击标签而不是后面的按钮,什么都不会发生。我通过简单地添加两个点击处理程序来解决这个问题:一个在按钮上,一个在标签上。这至少是一个解决办法。但现在我面临一个更大的问题: 你可以看到这些布局相互重叠。到目前为止,不可能单击按钮,因为每个按钮的顶部都钉有两个网格(一个包含按钮,一个包含通知) 只有在删除通知后,才能再次单击该按钮

在我的应用程序中,我有以下布局:

它是一个图形,ontop是一个标签,ontop是另一个图形(也有另一个标签)。现在我仍然希望人们能够点击按钮。这已经导致了标签的发布。如果你点击标签而不是后面的按钮,什么都不会发生。我通过简单地添加两个点击处理程序来解决这个问题:一个在按钮上,一个在标签上。这至少是一个解决办法。但现在我面临一个更大的问题:

你可以看到这些布局相互重叠。到目前为止,不可能单击按钮,因为每个按钮的顶部都钉有两个网格(一个包含按钮,一个包含通知)

只有在删除通知后,才能再次单击该按钮。但这个ofc是没有选择的。我怎样才能使按钮在后台是可点击的,即使有东西在上面

这是xaml:

<!--Grid for Button-->
        <Grid Grid.Row="1">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*"/>
                <ColumnDefinition Width="4*"/>
                <ColumnDefinition Width="*"/>
            </Grid.ColumnDefinitions>

            <ImageButton
                     Aspect="AspectFit"
                     Grid.Column="1"
                     x:Name="btn_mymatches_mainmenu"
                     Source="btn_emptydummy.png" BackgroundColor="#00000000"/>
            <Label
                    Grid.Column="1"
                    FontFamily="arial"
                    TextColor="#272727"
                    Text="Meine Matches" 
                    HorizontalOptions="Center" 
                    VerticalOptions="Center"/>

        </Grid>

        <!--Top Level Grid for Notifybutton-->
        <Grid Grid.Row="1" >
            <Grid.RowDefinitions>
                <RowDefinition Height="0.5*" />
                <RowDefinition Height="*" />
                <RowDefinition Height="2*" />
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="4.5*"/>
                <ColumnDefinition Width="*"/>
                <ColumnDefinition Width="*"/>
            </Grid.ColumnDefinitions>


            <Image
                Aspect="AspectFit"
                Grid.Column="1"
                Grid.Row="1"
                Source="img_notify.png" />
            <Label
                    x:Name="label_notify_nr"
                    Grid.Column="1"
                    Grid.Row="1"
                    FontSize="16"
                    FontFamily="arial"
                    TextColor="#ffff"
                    Text="1" 
                    HorizontalOptions="Center" 
                    VerticalOptions="Center"/>

        </Grid>


谢谢:)

因为两个按钮位于同一单元格中,所以通知按钮将覆盖网格的所有空间

在您的情况下,最好使用AbsoluteLayout

<StackLayout VerticalOptions="CenterAndExpand" HorizontalOptions="FillAndExpand">

        <AbsoluteLayout  AbsoluteLayout.LayoutBounds="1,1,1,.50" AbsoluteLayout.LayoutFlags="All"  Margin="10,10,10,10">
            <Frame Padding="0" Margin="20,20,20,20" BackgroundColor="Transparent" AbsoluteLayout.LayoutFlags="All" AbsoluteLayout.LayoutBounds="1,1,1,1">
                <Grid Grid.Row="1" >

                    <Grid.RowDefinitions>
                        <RowDefinition Height="60" />
                    </Grid.RowDefinitions>

                    <Frame Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="3" BackgroundColor="White" Padding="0" CornerRadius="30">

                        <Button Text="11111" Clicked="Button_Clicked"  BackgroundColor="LightBlue"/>

                    </Frame>


                </Grid>
            </Frame>

            <Frame   AbsoluteLayout.LayoutFlags="PositionProportional"  AbsoluteLayout.LayoutBounds=".8,-.2,50,50" Grid.Row="0" Grid.Column="2"   BackgroundColor="White" Padding="0" CornerRadius="30">

                <Button Text="1" Clicked="Button_Clicked_1"  BackgroundColor="Red" TextColor="White"/>

            </Frame>



        </AbsoluteLayout>



    </StackLayout>


是的,我明白这个问题,但问题是根据您的逻辑,“通知”按钮会根据您使用的手机而位于不同的位置,对吗?我希望它在同一点上-这是我通过使用网格中的百分比“*”实现的。你可以测试我的解决方案。