Нажатие кнопки в C # с использованием MVVM - PullRequest
0 голосов
/ 01 сентября 2018

Привет, ребята, мне нужна помощь для создания кода на C # для моего интерфейса. Я создаю какой-то пользовательский интерфейс для управления промышленным роботом FANUC, и мне удалось сделать все, кроме логики для одной команды. Поэтому мне нужно сделать логику, когда какая-то кнопка, например, кнопка JogA1 MINUS, нажата. UI должен отправить значение TRUE в PLC, когда я его освобождаю, необходимо отправить значение FALSE в plc, также я использую шаблон MVVM в C #.

Вот моя ViewModel:

public ICommand MinusA1Command { get; private set; } 

public MainWindowViewModel()
{        
    MinusA1Command = new RelayCommand(async () => { await MinusA1(); });
}

Вот модель:

public async Task  MinusA1()
{
      await Task.Run(() =>
      {
          var writeBuffer = new Byte[1];
          int writeResult = _client.DBWrite(5, 0, writeBuffer.Length, writeBuffer);

          S7.SetBitAt(ref writeBuffer, 0, 0, true);
      });
}

Вот мой взгляд:

<Button x:Name="Button1MINUS" Content="MINUS" HorizontalAlignment="Left" Height="27" Margin="544,138,0,0" VerticalAlignment="Top" Width="156"  Command="{Binding MinusA1Command, Mode=OneWay}"  />

1 Ответ

0 голосов
/ 03 сентября 2018

Лично я бы связал кнопку IsPressed с bool в ViewModel

<Button IsPressed="{Binding MinusA1}" />

и в вашем ViewModel

private bool _minusA1;
public bool MinusA1 { 
    get { return _minusA1; } 
    set 
    { 
        _minusA1 = value;
        if(_minusA1) 
        {
            // IsPressed = true logic
        }
        else
        {
            // Not IsPressed = true logic
        }
    }
}
...