2017-08-11 86 views
0

我有一个Xamarin形式页面,并在页面上有一个静态变量:如何更改静态变量对Xamarin.Form进行更改?

namespace City 
{ 
    public static class MS 
    { 
     public static int secs; 
    } 
} 

我的XAML

<Label x:Name="secondsLabel" /> 

我的C#代码更新这样的

while () { 
    // the code updates the value of secs here in the loop 
    MS.secs++; 
    secondsLabel.Text = MS.secs.ToString(); 
} 

但价值在屏幕上不会改变。有没有一种方法可以绑定到这个静态整数,这样当secs被C#代码改变时,屏幕会自动更新?

回答

2
<Label x:Name="secondsLabel" Text="{Binding Source={x:Static local:MS.Secs}}" /> 

你只能绑定到公共属性,所以你需要在后面的代码或VM属性

public static int Secs { 
    get { 
    return secs; 
    } 
    set { 
    secs = value; 
    PropertyChanged(); 
    } 
} 
+0

我需要有一个方法的PropertyChanged?此外,我不知道,但我的代码是这样做的:MS.secs ++;所以命名是否可以,或者我应该将代码更改为MS.Secs? – Melina

+1

你的类需要实现INotifyPropertyChanged。是的,你需要更新公共Secs属性,因为那是我们绑定的。 – Jason

+0

好吧,那么你是不是说在MS中用大写字母开头的字段会更正常?我只是想做最受欢迎的事情。你可以在答案中提出一个PropertyChanged方法。我想确保我做对了。感谢 – Melina