Рисую 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;
}
}
Допустим у вас есть кнопка
<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 =>
{
//Логика команды
});
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
В Visual Studio 2017 по крайней мере в C# стали обрабатывать Ctrl+Click как Go To Defenition, но я умею нажимать F12, которое делает то же самое
как подключить встроенную библиотеку в visual studio c# (БИБЛИОТЕКА SystemWindiws
Здравствуйте подскажите что мне надо сделать чтобы метод CursorPosition() заработал (c#)