Если еще заявление для отображения текста, а не двойной - PullRequest
0 голосов
/ 04 ноября 2019

Мне нужно визуализировать строку, а не двойное значение.

У меня есть метод, который производит случайное напряжение. Этот метод передается в качестве параметра для дальнейшего расчета давления. Я пытаюсь написать код, поэтому, если (случайное) напряжение составляет <= 2 ИЛИ> = 10, соответствующее текстовое поле должно отображаться как «Выкл.». Текстовое поле теперь читает значение Давления, используя метод AveragePressure. Пожалуйста, найдите код с вопросом. Заранее благодарим.

Просмотров / DiagnosticsView.cs:

    private void PresBindings()
    {


    private void PresBindings(Control c, string propertyName, object dataSource, string dataMember)
    {
        c.DataBindings.Add(propertyName, dataSource, dataMember, true, DataSourceUpdateMode.PropertyChanged);
    }

        Binding(textBoxVoltage, "Text", viewModel.Gas, nameof(PressureViewModel.Voltage)); //Voltage method in SystemMonitorViewModel.cs

Модель / Firmware.cs:

    public double GetVoltage()
    {
        double randVoltage;
        lock (lockObject)
        {
            Random r = new Random();
            randVoltage = r.NextDouble()*8.0;
            return randVoltage;

        }
    }

Monitor.cs string p = "-";

   public string Pressure
    {
        get
        {
            return p;
        }
        set
        {
            if (!string.Equals(value, p))
            {
                p = value;
                Property();
            }
        }
    }

Model / Gauge.cs:

    protected Average averagePressure;
    public double AveragePressure
    {
        get
        {
            GetAverage();
        }
    }

    public override void Read(double voltage, bool trip)
    {
        double P;
        Voltage = voltage;
        this.trip= trip;

        if ((voltage <= 2 || voltage >= 10))
        {
               ???
        }

    }

View / MainViewModel.cs

        Monitor.Gas.Pressure = sys.VacuumSystem.Gas.AveragePressure.ToString("0.0E-0");
        Monitor.Gas.Voltage = sys.VacuumSystem.Gas.Voltage.ToString("0.00");

Ответы [ 2 ]

1 голос
/ 04 ноября 2019

Вам необходимо отформатировать данные в вашей привязке. Это control.DataBindings.Add(propertyName, dataSource, dataMember, true, DataSourceUpdateMode.OnPropertyChanged); должно стать этим

Binding binding = new Binding(propertyName, dataSource, dataMember, true, DataSourceUpdateMode.OnPropertyChanged);
binding.Format+= (sender, e) => 
{
    if(double.Parse(e.Value.ToString()) <= 2 || double.Parse(e.Value.ToString()) >= 10)
        e.Value = "Off";
};
control.DataBindings.Add(binding);
0 голосов
/ 06 ноября 2019

Это сработало, написав логический метод получения и установки:

    public bool On
    {
        get; set;
    } = false;

    public override void Read(double voltage, bool trip)
    {
        double P;
        Voltage = voltage;
        this.trip= trip;

        if ((voltage <= 2 || voltage >= 10))
        {
               On = false;
        }
        else 
        {
               On = true;
        }....

   public string getText()
    {
        if (On)
            return AveragePressure.ToString("0.0E-0");
        else
            return "Off";
    }

View / MainViewModel.cs

    ViewModelLocator.Monitor.Gas.Pressure = VacuumSystem.Gas.getText();

Спасибо, ребята, за вашу помощь !!!

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