布尔值不会改变

时间:2017-11-21 16:09:03

标签: c# xamarin.forms

我将值设置为true或false,具体取决于构造函数中的DetailPage。

值(代码隐藏):

bool _mtde = false;

    public bool mTDE
    {
        get => _mtde;
        set
        {
            _mtde = value;
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(mTDE)));
        }
    }

两个DetailPages的构造函数:

public mTDE ()
    {
        InitializeComponent ();
        AddTankerfassungViewModel.tankerfassung.mTDE = true;
    }

public TDE ()
    {
        InitializeComponent ();
        AddTankerfassungViewModel.tankerfassung.mTDE = false;
    }

mTDEtrue时,电子邮件中会有其他信息(代码隐藏)。

public void SendData()
    {
        var mTDEText = "";
        if (mTDE)
        {
            mTDEText = "processed manually ";
        }
        .
        .
        .
    }

我使用断点进行调试,搜索所有引用:没有。我不知道为什么这个变量会留在false上。当我通过MasterDetailPage点击mTDE Con​​tentPage时,会遇到断点。

2 个答案:

答案 0 :(得分:0)

你应该做的事情就像你可以调用的状态转换器方法

public static bool InvertStates(bool boolThatYouWantToInvert){
    return !boolThatYouWantToInvert;
}

然后你可以像这样使用它

AddTankerfassungViewModel.tankerfassung.mTDE = InvertStates(AddTankerfassungViewModel.tankerfassung.mTDE)

请注意,当您声明AddTankerfassungViewModel.tankerfassung.mTDE时,应该初始化它,并注意您要在第一个DetailPage上传递的初始值

答案 1 :(得分:0)

解决方案是“外包”SendData()。我创建了一个新类,并在我的ViewModel SendCommand中调用它。

namespace TDE
{
class Email
{
    public static void SendData()
    {
        var mTDEText = "";
        if (AddTankerfassungViewModel.tankerfassung.mTDE)
        {
            mTDEText = "MANUELL ERFASST: ";
        };
        .
        .
        .
    }
}
}

在我的ViewModel中,我这样称呼它。

Email.SendEmail();

感谢您的帮助。