メインページ:PropertyChangedEventHandlerはなぜnullですか?
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クラスのインスタンスを取得します。
しかし、いずれのプロパティも、空のPropertyChangedEventHandler
のために更新するつもりはありません。
質問はなぜ常にnull public event PropertyChangedEventHandler PropertyChanged;
ある
?
ちょっとした提案です。予想されるフィールド/プロパティ名の規則に従っていません。 –
誰も購読していないということですか?これは、OneTimeバインディングを使用すると予想される動作です。 これは、インターフェースを定義していない場合(イベントは存在しますが、クラスによって定義されているなど)にも発生します。 –