2017-02-15 6 views
2

Как скрыть кнопку, ярлык или ячейку сетки на iOS и показать ее на Android, у меня есть приложение xamarin.forms (переносное), я знаю, что я должны использовать на платформе, но как получить доступ к видимости элементов управления.Xamarin Forms Скрыть кнопку на iOS и показать ее на Android

Благодаря

+0

но приложение аварии: Тип IsVisible не найден в Xmlns, поэтому мне нужно знать, что мне нужно поставить x: TypeArguments – Mireille

+0

Привет @Mireille, проверьте мой ответ, он должен вам помочь :) Если это так, пометьте его как ответ, чтобы он помог другим людям! :) – mindOfAi

+0

Только для уточнения: «IsVisible» - это название свойства. То, что вы должны оспаривать x: TypeArguments - это фактический тип свойства, который является bool (x: Boolean на стандартной странице контента). – Csharpest

ответ

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, как это:

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

В коде вы можете использовать Device.OnPlatform или проверить Device.OS свойство.

Это будет выглядеть так:

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

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

// ... Other code here 
0

Все эти ответы, кажется, связаны с созданием контроля ли вы на самом деле нужно, а затем установить IsVisible ложь на платформах вы не хотите его. Лучшее решение IMO заключается в том, чтобы создать контроль только в том случае, если вы действительно нуждаетесь в нем. Первый шаг был бы обернуть его в целях содержания:

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

Это лучше, но он по-прежнему создает лишние ContentView. Сделайте это еще на один шаг и используйте OnPlatform для объявления ControlTemplate, и вы достигнете самой оптимальной реализации на всех платформах.

Смежные вопросы