我正在使用Xaramin开发应用程序。
在我的解决方案中,我创建了一个ContentView.xaml,作为自定义GUI控件。
<?xml version="1.0" encoding="UTF-8"?>
<ContentView xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:test2;assembly=test2"
x:Class="test2.MyView">
<ContentView.BindingContext>
<local:MyViewModel MyValue="1"/>
</ContentView.BindingContext>
<StackLayout>
<Label HorizontalOptions="CenterAndExpand" VerticalOptions="CenterAndExpand" Text="{Binding MyValue}"/>
</StackLayout>
</ContentView>
我为此ContentView创建了一个ViewModel类:
using System;
using System.ComponentModel;
using Xamarin.Forms;
namespace test2
{
public class MyViewModel : INotifyPropertyChanged
{
int myValue;
public MyViewModel()
{
Device.StartTimer (TimeSpan.FromSeconds (1), () => {
this.MyValue++;
return true;
});
}
public int MyValue
{
set
{
if (! myValue.Equals(value)) {
myValue = value;
OnPropertyChanged ("myValue");
}
}
get
{
return myValue;
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null) {
PropertyChanged (this, new PropertyChangedEventArgs (propertyName));
}
}
}
}
我还创建了一个ContentPage.xaml,并在其中添加了我的自定义控件。
<?xml version="1.0" encoding="UTF-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:test2;assembly=test2"
x:Class="test2.MyPage">
<local:MyView />
</ContentPage>
我发现标签永远不会更新,为什么?
答案 0 :(得分:0)
初看时你应该替换
OnPropertyChanged ("myValue");
与
OnPropertyChanged ("MyValue");
由于属性名称区分大小写