Как я могу скрыть кнопку, используя аргумент в xamarin? - PullRequest
0 голосов
/ 05 июля 2018

Как я могу скрыть представление содержимого с помощью привязки. Как использовать привязку в аргументе на платформе? пожалуйста, проверьте следующий снимок экрана для выпуска.

enter image description here

В примере с скрин-шотом вроде showjoin истина видна. тогда все нормально. но showjoin имеет значение false, тогда по умолчанию отображается представление содержимого, поскольку в onflatform установлено значение true.

, пожалуйста, помогите мне решить эту проблему

Ответы [ 4 ]

0 голосов
/ 05 июля 2018

Если все, что вы хотите сделать, это скрыть ContentView, когда ваша платформа Android, я бы предложил использовать OnPlatform в вашем xaml. Кроме того, установка свойства IsVisible для ContentView дважды обычно не будет работать нормально.

Использование вашего xaml сверху:

<OnPlatform x:TypeArguments="View">
    <On Platform="iOS">
        <ContentView Margin="20,10,20,20" HeightRequest="40">
            <!-- Rest of ContentView code -->
        </ContentView>
    </On>

    <!-- You must specify an Android view -->
    <On Platform="Android">
        <!-- Use a simple boxview with height and width 0 to create an empty view -->
        <BoxView HeightRequest="0" WidthRequest="0" IsVisible="False"/>
    </On>
</OnPlatform>

Это покажет ContentView на вашей странице только при использовании iOS и ничего на Android .

0 голосов
/ 05 июля 2018

Вопрос не весь, который нужно прояснить ... но если вы хотите избежать переопределения XAML OnPlatform (потому что он не использует Binding), вы можете удалить его в XAML и просто добавить правильную логику в свойстве bool ShowJoinButton.

Вы можете проверить платформу в коде (даже в вашей ViewModel) следующим образом:

if(Device.RuntimePlatform == Device.iOS) ...

Если вы все еще хотите иметь все в XAML, это также возможно, конечно. Вы можете использовать Binding внутри OnPlatform, обратите внимание: аргумент типа должен быть BindingBase!

<OnPlatform x:TypeArguments="BindingBase" iOS="{Binding MyBool}" Android="{Binding MyBool}"/>
0 голосов
/ 05 июля 2018

Ниже приведен код для записи привязки в классе ViewModel

private const string ShowJoinButtonPropertyName = "ShowJoinButton";
private bool showJoinButton = false;
public bool ShowJoinButton
{
    get { return showJoinButton; }
    set { SetProperty(ref showJoinButton, value, ShowJoinButtonPropertyName); }
}

Везде, где вы хотите скрыть / показать, вам нужно использовать следующий код

if (Device.RuntimePlatform == Device.Android)
{
    ShowJoinButton = false;
}
else
{
    ShowJoinButton = true;
}

Надеюсь, это поможет!

0 голосов
/ 05 июля 2018

а) Создайте одно булево свойство в Viewmodel, например. IsContentViewVisible

b) Привязать это свойство к свойству contentview IsVisible, например, IsVisible = "{Binding IsContentViewVisible}", также убедитесь, что событие Raisepropertychanged должно иметь место.

в) В соответствии с вашими потребностями вы установите для свойства IsContentViewVisible значение False / true в вашей ViewModel

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...