最近、Xamarin.Formsは、コントロールの動作をClear
およびDefault
の背景に変更しました。変更点はこのPRに記載されています:https://github.com/xamarin/Xamarin.Forms/pull/935Xamarin.Formsで対話性のないオーバーレイレイヤー
この変更は、2つのアプリケーションの大幅な変更でした。 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
のように、マップの上に複数のレイヤーを配置できます。これは、すべてのコントロールに単一のレイアウトコンテナを簡単に使用できないことを意味します。
これを回避する方法はありますか?
こんにちはマーティン。達成しようとしていることを示す簡単なレプロプロジェクトを作成すると、(特にXamarinチームの)より多くの回答が得られると思います。個人的に私があなたがしたいことを理解しており、その例が助けになるとは思っていません。あなたは現在のXamarin.Formsバージョンで作業しているところで1つのコミットを行い、次にXamarin.Formsバージョンを更新する場所でコミットできますか? –
はい、私はサンプルのレポを提供しようとします –