2017-02-15 9 views
2

iOS上のボタン、ラベル、グリッドセルを非表示にしてアンドロイドに表示する方法、xamarin.formsアプリ(ポータブル)があります。プラットフォーム上で使用する必要がありますが、コントロールの可視性にアクセスする方法はありません。XamarinフォームiOSのボタンを非表示にしてAndroidで表示

おかげ

+0

アプリケーションがクラッシュする:xmlnsに型IsVisibleがないため、x: TypeArguments – Mireille

+0

こんにちは@Mireille、私の答えをチェックしてください、それはあなたを助けるはずです:)もしそうなら、それは他人を助けるように答えとしてタグを付けてください! :) – mindOfAi

答えて

3
// IOS, Android, WP 
SomeButton.IsVisible = Device.OnPlatform<bool>(false, true, true); 

それとも

if (Device.OS == TargetPlatform.Android) 
{ 
    SomeButton.IsVisible = true; 
} 
else 
... 
14

あなたはXAMLでそれをしたい場合は、特定のプラットフォーム上のビューを隠すために、あなたがこれを使用することができます:

<Button> 
     <Button.IsVisible> 
     <OnPlatform x:TypeArguments="x:Boolean" 
         iOS="false" 
         Android="true"/> 
     </Button.IsVisible> 
    </Button> 

はそれが役に立てば幸い!

+0

あなたの返事をありがとう、それは私を助けてくれました – Mireille

+0

私は助けてうれしい!しかし、あなたはコードビハインドを通して答えを探していたようです。 – mindOfAi

3

mindOfAiは、あなたがこのようにXAMLでこれを行うことができます述べたように:あなたはDevice.OnPlatformを使用するかDevice.OSプロパティを確認することができますコードで

<Button> 
    <Button.IsVisible> 
     <OnPlatform x:TypeArguments="x:Boolean" 
         iOS="false" 
         Android="true"/> 
    </Button.IsVisible> 
</Button> 

。以下のようになります

// ... Other code here 
Device.OnPlatform(iOS:() => { myButton.IsVisible = false; }); 

// Or do this: 
if (Device.OS == TargetPlatform.iOS) 
    myButton.IsVisible = false; 

// ... Other code here 
0

これらの答えのすべては、あなたが実際にそれを必要とするか否かのコントロールを作成し、あなたがそれを望んでいないプラットフォームではfalseにのisVisibleを設定関与しているようです。より良い解決策IMOは、あなたが実際にそれを必要とする場合、最初にコントロールを作成するだけです。最初の手順はコンテンツビューでラップすることです:

<ContentView> 
    <OnPlatform x:TypeArguments="View"> 
     <OnPlatform.Android> 
      <Button Text="Something" ...etc... /> 
     </OnPlatform.Android> 
    </OnPlatform> 
</ContentView> 

それでも問題はありませんが、それでも余分なContentViewが作成されます。さらに一歩進んで、OnPlatformを使用してControlTemplateを宣言すれば、すべてのプラットフォームで最適な実装が実現します。

関連する問題