ICommand WPF вызывается при запуске программы

175
09 декабря 2018, 13:40

Рисую UI с помощью WPF и MVVM. При использовании

  <Button Name="priceButton" Content="Прайс" Command="{Binding GetPricesCom}" 
  HorizontalAlignment="Left" Margin="339,513,0,0" VerticalAlignment="Top" 
  Width="125" Height="31" Click="priceButton_Click"/>

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

    public ICommand GetPricesCom
    {
        get {
            GetPrices();
            return GetPricesCom;
        }
    }
Answer 1

Допустим у вас есть кнопка

<Button Content="Test" Margin="5" Command="{Binding TestCommand}">

Далее, в вашей ViewModel вы создаёте команду. Я использую такое решение:

Это базовый класс для команд, давно нашёл его и теперь он кочует из проекта в проект.

public class RelayCommand : ICommand
{
    private Action<object> _execute;
    private Func<object, bool> _canExecute;
    public event EventHandler CanExecuteChanged
    {
        add => CommandManager.RequerySuggested += value;
        remove => CommandManager.RequerySuggested -= value;
    }
    public RelayCommand(Action<object> execute, Func<object, bool> canExecute = null)
    {
        _execute = execute;
        _canExecute = canExecute;
    }
    public bool CanExecute(object parameter)
    {
        return _canExecute == null || _canExecute(parameter);
    }
    public void Execute(object parameter)
    {
        _execute(parameter);
    }
}

И в ViewModel объявляете команду

public RelayCommand TestCommand => new RelayCommand(o =>
{
    //Логика команды
});
READ ALSO
Как вернуть старое поведение Ctrl+Click?

Как вернуть старое поведение Ctrl+Click?

В Visual Studio 2017 по крайней мере в C# стали обрабатывать Ctrl+Click как Go To Defenition, но я умею нажимать F12, которое делает то же самое

136
как подключить встроенную библиотеку в visual studio c#

как подключить встроенную библиотеку в visual studio c#

как подключить встроенную библиотеку в visual studio c# (БИБЛИОТЕКА SystemWindiws

150
Установить курсор в координаты

Установить курсор в координаты

Здравствуйте подскажите что мне надо сделать чтобы метод CursorPosition() заработал (c#)

133
помогите с массивами php

помогите с массивами php

у меня есть array

125