Привязка WPF к переменной другого класса или структуры - PullRequest
1 голос
/ 05 августа 2020

Я пытаюсь настроить экран дисплея для источника напряжения, он имеет несколько отключений и заданных значений одного типа. Я не могу получить структуру или класс для хранения этих значений для работы.

Класс, в котором хранятся переменные

class DualOutput
{
    private readonly double minVoltage = -1.5;
    private readonly double maxVoltage = 1.5;

    private double setVoltage;
    public double SetVoltage
    {
        get => setVoltage;
        set
        {
            value = value < minVoltage ? minVoltage : value > maxVoltage ? maxVoltage : value;
            setVoltage = value;
        }
    }

    public double Voltage { get; set; }
    public double Current { get; set; }

}

Код, который находится в основном классе dataContext. [AddINotifyPropertyChangedInterface] также добавляется к этому классу

public DualOutput DualOutput1 = new DualOutput()
{
    SetVoltage = 0,
    Voltage = 0,
    Current = 0
};
public DualOutput DualOutput2 = new DualOutput();

XAML для части, которую я пытаюсь показать:

<TextBox Grid.Row="0" Grid.Column="1" Text="{Binding DualOutput1.SetVoltage, StringFormat={}{0:N3} kV}" Style="{StaticResource SetterBox}"/>
<TextBox Grid.Row="0" Grid.Column="2" Text="{Binding DualOutput1.Voltage, StringFormat={}{0:N3} kV}" Style="{StaticResource GetterBox}"/>
<TextBox Grid.Row="0" Grid.Column="3" Text="{Binding DualOutput1.Current, StringFormat={}{0:N2} uA}" Style="{StaticResource GetterBox}"/>
<TextBox Grid.Row="1" Grid.Column="1" Text="{Binding DualOutput2.SetVoltage, StringFormat={}{0:N3} kV}" Style="{StaticResource SetterBox}"/>
<TextBox Grid.Row="1" Grid.Column="2" Text="{Binding DualOutput2.Voltage, StringFormat={}{0:N3} kV}" Style="{StaticResource GetterBox}"/>
<TextBox Grid.Row="1" Grid.Column="3" Text="{Binding DualOutput2.Current, StringFormat={}{0:N2} uA}" Style="{StaticResource GetterBox}"/>

Как видите, я попытался запустить класс как установка, а не установка значений.

Я неправильно привязываю значения? Я пробовал использовать как класс, так и структуру для DualOutput. Я не получаю сообщений об ошибках, просто не отображаются значения.

Ответы [ 2 ]

0 голосов
/ 05 августа 2020

DualOutput1 и DualOutput2 должны быть опубликованы c свойствами , чтобы вы могли к ним привязаться:

public DualOutput DualOutput1 { get; } = new DualOutput()
{
    SetVoltage = 0,
    Voltage = 0,
    Current = 0
};

public DualOutput DualOutput2 { get; } = new DualOutput();

Вы определили их как publi c поля .

0 голосов
/ 05 августа 2020

Я думаю, что это сработает, если вы создадите полное свойство для хранения значения. Затем вы вызываете событие OnPropertyChanged (или как вы его называете), когда вы устанавливаете новое значение на основе значения, присвоенного экземпляром DualOutput .

Кроме того ... если вы создаете класс с помощью метода установки, ваше свойство Voltage должно сохранять свое значение в резервном поле и не должно иметь модификатора set , что позволяет избежать обхода метода . Или ваш журнал проверки c может go прямо во внутреннем сеттере свойства.

...