【问题标题】:PropertyChanged is always null on wp7.1 but works fine on wp8PropertyChanged 在 wp7.1 上始终为空,但在 wp8 上工作正常
【发布时间】:2013-08-27 07:02:19
【问题描述】:

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

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

这是我的代码(我试图让它尽可能简单地说明问题)。

Xaml:

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
    <TextBox x:Name="txtTest" Text="{Binding Text}"></TextBox>
</Grid>

主页类:

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));
    }
}

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

如上所述,代码适用于 Windows Phone 8 模拟器,但 PropertyChanged 对于 Windows Phone 7.1(设备和模拟器)始终为空。

MainPage 构造函数没有设置 PropertyChanged(第一次赋值后它已经为空 - DataConext = ...)。

提前感谢您的任何建议。

【问题讨论】:

    标签: windows-phone-8 windows-phone-7.1


    【解决方案1】:

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

    要知道为什么不起作用,这仅仅是因为您没有将 BindingTest 课程标记为公开。如下更改类声明,它应该可以工作:

    public class BindingTest : INotifyPropertyChanged
    

    【讨论】:

    • 谢谢,对于在 C++ 之后才开始使用 C# 的人来说,这很简单但并不明显。
    猜你喜欢
    • 2013-12-05
    • 2014-06-15
    • 1970-01-01
    • 2010-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多