Десятичное число в списке не содержит значения или добавляется, когда предполагается. Продолжает возвращаться 0 - PullRequest
0 голосов
/ 09 апреля 2020

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

void AddToBudget_Clicked(object sender, System.EventArgs e)
    {
        Budget Budget = new Budget()
        {
            OutgoingProductName = OProductName.Text,
            OutgoingMonthlyCost = Convert.ToDecimal(OMonthlyCost.Text)

        };

        using (SQLiteConnection conn = new SQLiteConnection(App.FilePath))
        {
            conn.CreateTable<Budget>();
            int rowsAdded = conn.Insert(Budget);

        }

        DisplayAlert("Added!", "Your Monthly Item has been Added to Budget!", "OK");

        BindingContext = new Budget();

        OnAppearing();
    }

Как только элемент сохраняется в списке, я хочу сложить все OutgoingMonthlyCost Затем вычесть его из входных данных, которые вводит пользователь, а это MonthlySalary - Это поле ввода, в котором Пользователь будет вводить, сколько они получают ежемесячно после уплаты налогов. Я добавил весь свой код для класса ниже. Я чувствую, что рутина TotalBudget() В чем проблема.

 private string outgoingProductName { get; set; }
    public string OutgoingProductName
    {
        get => outgoingProductName;
        set
        {
            outgoingProductName = value;
            OnPropertyChanged("OutgoingProductName");
        }
    }


    private decimal outgoingMonthlyCost { get; set; }
    public decimal OutgoingMonthlyCost
    {
        get => outgoingMonthlyCost;
        set
        {

            outgoingMonthlyCost = value;
            OnPropertyChanged("OutgoingMonthlyCost");

        }

    }


    private decimal monthlySalary { get; set; }
    public decimal MonthlySalary
    {
        get => monthlySalary;
        set
        {

            monthlySalary = value;
            OnPropertyChanged("MonthlySalary");
            TotalBudget();

        }

    }


    private string finalBudget { get; set; }
    public string FinalBudget
    {
        get => finalBudget;
        set
        {

            finalBudget = value;
            OnPropertyChanged("FinalBudget");

        }

    }


    public void TotalBudget()
    {

        var Conversion = default(decimal);

        Conversion += OutgoingMonthlyCost;

        if (Conversion != 0)
        {

            FinalBudget = "£" + (MonthlySalary - Conversion);
        }

        else
        {
            FinalBudget = "£" + MonthlySalary;
        }

    }

1 Ответ

3 голосов
/ 09 апреля 2020

при преобразовании числа в строку, C# дает вам контроль над форматированием

FinalBudget = (MonthlySalary - Conversion).ToString("C");

"C" - это встроенный конвертер для валюты, или вы можете использовать пользовательский формат строки

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