2013-08-27 19 views
0

免责声明:有很多的问题,这里大约PropertyChanged事件这始终是零,我读过一大半。但我发布了另一个(可能与其他人不同)。的PropertyChanged总是在wp7.1空,但在WP8工作正常

我创建了一个非常简单的数据绑定应用程序。它在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始终为NULL的Windows Phone 7.1(设备和仿真器)。

的构造函数的MainPage不成立的PropertyChanged(已经是空的第一个任务后 - DataConext = ...)。

非常感谢您的任何建议。

回答

0

首先,把事情清楚:你是说,这是行不通的,因为的PropertyChanged为空。这是错误的。您必须以其他方式查看问题:PropertyChanged为空,因为它不起作用。

至于知道为什么就是不工作,它只是因为你没有标记您的BindingTest类作为公众。更改类的声明如下,它应该工作:

public class BindingTest : INotifyPropertyChanged 
+0

谢谢,它是如此简单,但不是明显的,一个人刚刚开始C#后的C#。 – Mar

相关问题