C# 为什么我的文本不显示带有OnPropertyChanged函数的值?

C# 为什么我的文本不显示带有OnPropertyChanged函数的值?,c#,xamarin,xamarin.forms,C#,Xamarin,Xamarin.forms,现在,当我尝试在XAML中绑定标签时,没有收到任何文本。由于某种原因,它似乎在我的viewmodel中找不到我的字符串Forename的“setvalue”。当我的Forename尝试设置不同的值时,我会将其写入日志中,但找不到它们中的任何一个。不是if,不是if-else,也不是else (myInt是一个int,其值为0、1或2。默认为0。) 我有一个带有以下代码的viewmodel: public class MenuViewModel : INotifyPropertyChanged {

现在,当我尝试在XAML中绑定标签时,没有收到任何文本。由于某种原因,它似乎在我的viewmodel中找不到我的字符串
Forename
的“setvalue”。当我的
Forename
尝试设置不同的值时,我会将其写入日志中,但找不到它们中的任何一个。不是if,不是if-else,也不是else

myInt
是一个
int
,其值为
0
1
2
。默认为
0
。)

我有一个带有以下代码的viewmodel:

public class MenuViewModel : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    protected virtual void OnPropertyChanged(string propertyName)
    {
        var changed = PropertyChanged;
        if (changed != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));    
        }
    }

    string info;

    public string Forename 
    {
        get { return info; }
        set 
        {
            if (myInt == 0) 
            {
                info = "TextOne";
                OnPropertyChanged("Forename");
            }
            else if (myInt == 1)
            {
                info = "TextTwo";
                OnPropertyChanged("Forename");
            }
            else 
            {
                info = "TextThree";
                OnPropertyChanged("Forename");
            }

            // When I try to write out these if, else if, else in the log 
            // I get nothing. So it does not seem to reach them.
        }
    }
}
这就是我在contentpage+其XAML上接收它的方式:

public MenuPage()
{
    InitializeComponent();
    BindingContext = new MenuViewModel();
}
使用XAML:

<Label Text = "{Binding Forename}" />


Forename的getter返回info的值。您从未为info初始化过值,也从未将Forename设置为值,因此info将不会是null以外的任何值。如果把你的“如果/那么”放在你的“获取者”中,而不是一个二传者,可能会更有意义。是的!现在可以了。它每秒会写出10次结果,为什么会这样,我如何才能改变?也许这并不重要,但它如此频繁地工作可能对应用程序不太好?不知道,您还没有显示设置值的代码。