Windows phone 8 PropertyChanged在wp7.1上始终为空,但在wp8上可以正常工作

Windows phone 8 PropertyChanged在wp7.1上始终为空,但在wp8上可以正常工作,windows-phone-8,windows-phone-7.1,Windows Phone 8,Windows Phone 7.1,免责声明:这里有很多关于PropertyChanged事件的问题,它总是空的,我已经阅读了大部分问题。但我正在发布另一个(可能与其他人不同) 我创建了一个非常简单的数据绑定应用程序。它在Windows Phone 8上运行良好,但在Windows Phone 7.1上根本不起作用,因为在WP7.1上PropertyChanged始终为空 这是我的代码(我已经尽力使它尽可能简单来说明这个问题) Xaml: 最后,数据上下文类: 如您所见,我没有忘记设置的数据上下文,实现INotifyPro

免责声明:这里有很多关于PropertyChanged事件的问题,它总是空的,我已经阅读了大部分问题。但我正在发布另一个(可能与其他人不同)

我创建了一个非常简单的数据绑定应用程序。它在Windows Phone 8上运行良好,但在Windows Phone 7.1上根本不起作用,因为在WP7.1上PropertyChanged始终为空

这是我的代码(我已经尽力使它尽可能简单来说明这个问题)

Xaml:

最后,数据上下文类:

如您所见,我没有忘记设置的数据上下文,实现INotifyPropertyChanged接口,并调用RaisePropertyChanged()

如上所述,该代码在WindowsPhone8Emulator上运行,但对于WindowsPhone7.1(设备和emulator),PropertyChanged始终为空

MainPage构造函数未设置PropertyChanged(在第一次赋值后它已为null-DataConext=…)


提前感谢您提供的任何建议。

首先,要明确一点:您是说它不起作用,因为PropertyChanged为空。那是错误的。您必须以另一种方式看待问题:PropertyChanged为null,因为它不起作用

至于知道为什么is不起作用,这仅仅是因为您没有将
BindingTest
类标记为public。按如下所示更改类声明,它应该可以工作:

public class BindingTest : INotifyPropertyChanged

谢谢,这对于C++刚刚开始的C语言的人来说是如此简单,但并不明显。
public partial class MainPage : PhoneApplicationPage
{
    // Constructor
    public MainPage()
    {
        InitializeComponent();
        DataContext = new BindingTest();
    }
}
class BindingTest : INotifyPropertyChanged
{
    private string _strTest = "Hello";

    public string Text 
    { 
        get { return _strTest; } 
        set
        {
            if (_strTest != value)
            {
                _strTest = value;
                RaisePropertyChanged("Text");
            }
        } 
    }    

    public event PropertyChangedEventHandler PropertyChanged;
    protected void RaisePropertyChanged(string name)
    {
        PropertyChangedEventHandler handler = PropertyChanged;
        if (handler != null) handler(this, new PropertyChangedEventArgs(name));
    }
}
public class BindingTest : INotifyPropertyChanged