クラスがあります
public class SomeModel : INotifyPropertyChanged {
public ObservableCollection<SomeSubModel> SubModels {get; set;}
public int Sum { get { return SubModels.Sum(x=> x.Count) }}
private string _url;
public string Url
{
get { return _url; }
set
{
_url = value;
OnPropertyChanged();
}
}
public event PropertyChangedEventHandler PropertyChanged;
[NotifyPropertyChangedInvocator]
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
var handler = PropertyChanged;
if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
}
}
public class SomeSubModel : INotifyPropertyChanged {
private string _count;
public string Count
{
get { return _count; }
set
{
_count = value;
OnPropertyChanged();
}
}
public event PropertyChangedEventHandler PropertyChanged;
[NotifyPropertyChangedInvocator]
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
var handler = PropertyChanged;
if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
}
}
SomeSubModel.Sum
WPFUIでバインディングを使用します。
SomeSubModel.Count
プロパティは、非常に頻繁に変更されます。
監視可能なコレクション内の任意のアイテムのSomeSubModel.Sum
プロパティSomeSubModel.Count
が、バインディングを介してWPF UISomeModel.SubModels
の実際を反映するように変更されたときに、その変更を通知するにはどうすればよいSomeSubModel.Sum
ですか?
主な目標は、観察可能なコレクション内のオブジェクトのすべてのカウントの実際の合計をUIに反映することです。
ありがとうございました!
その場合も、Sumプロパティに対して変更されたnotifyプロパティを起動する必要があります。
private string _count;
public string Count
{
get { return _count; }
set
{
_count = value;
OnPropertyChanged();
var handler = PropertyChanged;
if (handler != null)
handler(this, new PropertyChangedEventArgs("Sum"));
}
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加