2017-11-21 10 views
3

最近、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のように、マップの上に複数のレイヤーを配置できます。これは、すべてのコントロールに単一のレイアウトコンテナを簡単に使用できないことを意味します。

これを回避する方法はありますか?

+0

こんにちはマーティン。達成しようとしていることを示す簡単なレプロプロジェクトを作成すると、(特にXamarinチームの)より多くの回答が得られると思います。個人的に私があなたがしたいことを理解しており、その例が助けになるとは思っていません。あなたは現在のXamarin.Formsバージョンで作業しているところで1つのコミットを行い、次にXamarin.Formsバージョンを更新する場所でコミットできますか? –

+0

はい、私はサンプルのレポを提供しようとします –

答えて

0

ような何かを試してみました私は、この問題は、現在を見て、いくつかの開発者がこの問題に遭遇していることをされていることをマイクロソフトXamarinチームからE. Z.ハートからの確認を得ました。新しいアプローチの回避策がすぐに実装されるか、アップデートは関連するbug in Bugzilla :-)に掲載されます。

0

あなたは

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

残念ながら、それは私の実現可能な解決策ではありません。実際のアプリでは、上に複数のレイヤーがあり、すべてのコントロールに1つのレイアウトを使用することはできません。具体的には、マップの上にある「コンテキストメニュー」のレイヤーがあり、ユーザーがマップ上の別の場所をタップすると作成されます。だから私は 'AbsoluteLayout'が必要ですが、いくつかのコントロールでは' Grid'(例えばズームボタン)が必要です。 –

+0

です。私は同じような問題を抱えていたと思います。 Grid Horizo​​ntalOptionsとVerticalオプションを展開しない(開始、終了、中央など)ように設定する必要があります。 – Daniel

+0

これはズームボタンなどでは機能しますが、コンテキストメニューなどではオーバーレイレイヤーが必要な場合は使用できません:-(... –

関連する問題