繁体   English   中英

Xamarin.Forms中没有交互性的覆盖层

[英]Overlay layer without interactivity in Xamarin.Forms

最近,Xamarin.Forms更改了具有“ Clear和“ Default背景的控件的行为。 此PR中描述了更改: https : //github.com/xamarin/Xamarin.Forms/pull/935

此更改是我的两个应用程序中的重大更改。 UWP和WPF中的默认XAML行为是,当清除Backgroundx:Null )时,视觉对象是单击对象,但是如果它有一些子对象,您仍然可以与它们进行交互。 这对于映射应用程序非常重要,在这种应用程序中,您经常需要地图控件,然后在其上方布置一些控件。 如果将图层设置为InputTransparent用户无法以任何方式与图层中的任何控件进行交互,如果不进行设置,则无法与地图本身进行交互。

问题是我看不到任何简单的解决方法,因为没有布局父级就无法布局控件。 如果要将它们放置在网格中,则需要在它们上方放置一个网格。 这将阻止地图。 与任何其他布局相同。

我想要实现以下目标:

<CustomMapControl />
<Grid x:Name="ControlsGrid">
   <Grid.RowDefinitions>
      <RowDefinition Height="*" />
      <RowDefinition Height="*" />
   </Grid.RowDefinitions>
   <Button Grid.Row="1" Text="Zoom in" />
</Grid>
<AboluteLayout x:Name="PlaceMenuContainer" />

现在,此代码将不允许我与地图进行交互,因为网格将其遮挡了。 如果将InputTransparent="True"添加到网格,则不再可以与按钮交互,因为不再将触摸交互分配给它们(请参见VisualInputRenderer,第52-64行 )。 还要注意,我可以在地图上方具有多个图层,例如PlaceMenuContainer ,它是上下文菜单项的容器,当用户点击地图上的某个位置时,这些菜单项将显示在地图上方。 这意味着我无法轻松地将单个布局容器用于所有控件...

您对此有何见解?

我从Microsoft Xamarin团队的EZ Hart那里得到了确认,该问题当前正在被解决,并且有几个开发人员遇到了此问题。 即将实施新方法的变通办法,任何更新都将发布在Bugzilla :-)中的相关错误上

你尝试过类似的东西吗

<Grid>
   <Grid.RowDefinitions>
      <RowDefinition />
      <RowDefinition />
   </Grid.RowDefinitions>
   <CustomMapControl Grid.RowSpan="2"/>
   <Button Grid.Row="1" Text="Click me" />
</Grid>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM