最近,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, line 52 - 64)。另请注意,我可以在地图上方有多个图层,例如PlaceMenuContainer
,它是上下文菜单项的容器,当用户点击地图上的某个位置时,该上下文菜单项会显示在地图上方。这意味着我不能轻易地为所有控件使用单个布局容器......
你看到有什么方法吗?
答案 0 :(得分:1)
我收到了来自Microsoft Xamarin团队的E. Z. Hart的确认,目前正在查看此问题,并且有几位开发人员遇到了这个问题。要么很快就会实施新方法的解决方法,任何更新都会发布在相关的bug in Bugzilla上: - )。
答案 1 :(得分:0)
你有没有试过像
这样的东西<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<CustomMapControl Grid.RowSpan="2"/>
<Button Grid.Row="1" Text="Click me" />
</Grid>