的炫魅:爲什麼PropertyChangedEventHandler爲空?
MainPage.xaml中
<Canvas x:Name="LayoutRoot" Background="White">
</Canvas>
MainPage.xaml.cs中
List<Usol> list = new List<Usol>();
for (int i = 0; i < 10; i++)
{
var element = new Usol();
list.Add(element);
Canvas.SetTop(element, i * 25);
LayoutRoot.Children.Add(list[i]);
}
foreach (var item in list)
{
item.context.name = "Varken";
}
一個用戶控件
Usol.xaml
<Grid x:Name="LayoutRoot" Background="White">
<TextBlock Text="{Binding Name}" />
</Grid>
Usol.xaml.cs
public Context context;
public Usol()
{
InitializeComponent();
context = new Context();
this.DataContext = context;
}
一類
Context.cs
public class Context : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
#region Fields
/// <summary>
/// Field Declaration for the <see cref="Name"/>
/// </summary>
private string name;
#endregion
#region Properties
/// <summary>
/// Gets or Sets the Name
/// </summary>
public string Name
{
get { return name; }
set
{
if (this.name != value)
{
this.name = value;
OnPropertyChanged("Name");
}
}
}
#endregion
}
現狀
我創造了這個小測試應用程序在一個更大的應用程序來複制一個問題,我有。它以相同的方式工作(不完全,但足夠接近)。
它增加了一些定製的用戶控件和每個獲得自己的一個DataContext類的實例。
然而,沒有任何屬性都願意更新themselfs由於空PropertyChangedEventHandler
。
問題
爲什麼public event PropertyChangedEventHandler PropertyChanged;
總是空?
只是一個建議。您沒有遵循預期的字段/屬性名稱約定。 –
你的意思是沒有人訂閱?如果您使用OneTime綁定,這是我期望的行爲。 。如果你沒有定義接口(例如事件在那裏,但類定義它),也會發生這種情況。 –