子クラスがある親クラスがあります。どちらのクラスも、Template10を使用して変更通知をサポートしています。変更通知は各クラス内で動作します(つまり、同じクラス内のプロパティを更新する場合)が、子からの親に対して変更通知をトリガーすることはできません。RaisePropertyChangedは親に通知しません
public class ParentViewModel : ViewModelBase
{
public string ParentString { get }
public decimal? Net { get { return Total/(1 + TaxRate/100); } }
public decimal? Tax { get { return Total - Net; } }
decimal? _Total = default(decimal?);
public decimal? Total
{
get
{
return _Total;
}
set
{
Set(ref _Total, value);
RaisePropertyChanged(nameof(Net));
RaisePropertyChanged(nameof(Tax));
}
}
public ObservableCollection<ChildViewModel> MyChildren { get; set; }
我々は我々がChildString
を持ってChildViewModel
で
Net { get { return Total/(1 + TaxRate/100); } }
と
Tax { get { return Total - Net; } }
を発射するParentViewModel
でRaisePropertyChanged
を使用することができます見つけます。 ChildString
への変更をParentString
に通知します。
public class ChildViewModel : ViewModelBase
{
ParentViewModel MyParent { get; set; }
string _ChildString = default(string);
public string ChildString
{
get
{
return _ChildString;
}
set
{
Set(ref _ChildString, value);
RaisePropertyChanged(nameof(this.MyParent.ParentString));
}
}
ParentString
は更新していません。 ChildString
が更新されると、どのようにしてParentString
を更新する必要がありますか?
を割り当てthis.MyParent'ていますか?そしておそらく[このように質問](http://stackoverflow.com/questions/1427471/observablecollection-not-noticing-when-item-in-it-changes-even-with-inotifyprop)が助けてくれる –
@Lei Yang MyParentが割り当てられている任意のメソッドがChildViewModelのインスタンスを作成します。リンクありがとうございました。受け入れられた答えは私たちのためのトリックです。 – Vague