C# 为什么我的文本不显示带有OnPropertyChanged函数的值?
现在,当我尝试在XAML中绑定标签时,没有收到任何文本。由于某种原因,它似乎在我的viewmodel中找不到我的字符串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 {
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次结果,为什么会这样,我如何才能改变?也许这并不重要,但它如此频繁地工作可能对应用程序不太好?不知道,您还没有显示设置值的代码。