Как отключить кнопку в Xamarin с помощью ICommand - PullRequest
0 голосов
/ 15 октября 2018

У меня есть приложение, которое имеет 2 кнопки.Первый считает, второй говорит «установить 0» в формах Xamarin.Я хочу, чтобы upcountButton получал Grey / Disabled, когда получено значение 512.вот мой код:

    public ObservableCollection<NumberViewModel> Nummer { get; private set; } = new ObservableCollection<NumberViewModel>();
    private int _currentNumber;
    public int Current
    {
        get
        {
            return _currentNumber;
        }
        set
        {
            _currentNumber = value;
            OnPropertyChanged();
        }
    }

    public ICommand CountUpCommand { get; private set; }
    public ICommand DelCommand { get; private set; }

    Number Zahl = new Number();

    public CounterViewModel()
    {
        CountUpCommand = new Command(CountUp);
        DelCommand = new Command(SetZero);
    }

    public void SetZero()
    {
        Current = 0;
        Nummer.Add(new NumberViewModel { Num = Current});
        Checker(Current);

    }

    public void CountUp()
    {

            Current++;
            Nummer.Add(new NumberViewModel { Num = Current });
        Checker(current);


    }
    public void Checker(int check)
    {
        if (check > 512)
        {
            //button.grayout
        }
        else { }
    }

Так как я могу связать это с состоянием включения моей кнопки?

О, я забыл свой код xaml:

<StackLayout>
        <Button Text="+1" Command="{Binding CountUpCommand}" x:Name="plusOne" />
        <Button Text="DEL" Command="{Binding DelCommand}" />
    </StackLayout>
<Label Text="--------------" />
<StackLayout>
    <ListView ItemsSource="{Binding Nummer}">
        <ListView.ItemTemplate>
            <DataTemplate>
                <TextCell 
                Text="{Binding Num}"
                x:Name="ElNr"
                />
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>
</StackLayout>

1 Ответ

0 голосов
/ 15 октября 2018

Каждая команда имеет метод CanExecute.

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

Просто сделайтеОбязательно вызовите ChangeCanExecute, чтобы уведомить пользовательский интерфейс об изменении статуса команды.

Например:

public CounterViewModel()
{
    CountUpCommand = new Command(CountUp, CanCountUp);
}

public int Current
{
    get
    {
        return _currentNumber;
    }
    set
    {
        _currentNumber = value;
        OnPropertyChanged();
        CountUpCommand.ChangeCanExecute();
    }
}


public void CountUp()
{
    Current++; //will result in calling CanCountUp and updating button status
    Nummer.Add(new NumberViewModel { Num = Current });
}

public bool CanCountUp()
{
    return Current <= 512;  
}

PS Вы должны использовать camelcase для открытых имен членовнапример Current вместо current.

...