[英]Overlay layer without interactivity in Xamarin.Forms
最近,Xamarin.Forms更改了具有“ Clear
和“ Default
背景的控件的行为。 此PR中描述了更改: https : //github.com/xamarin/Xamarin.Forms/pull/935
此更改是我的两个应用程序中的重大更改。 UWP和WPF中的默认XAML行为是,当清除Background
( x: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
,它是上下文菜单项的容器,当用户点击地图上的某个位置时,这些菜单项将显示在地图上方。 这意味着我无法轻松地将单个布局容器用于所有控件...
您对此有何见解?
你尝试过类似的东西吗
<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.