私のシナリオでは、プロパティが変更されるたびにOnPropertyChangedイベントを発生させたいOnPropertyChangedイベントをViewModelのプロパティのセッターで明示的に呼び出さなくても起動できますか?
プロパティ値が変更されるたびにnameof(property)を自動的に渡すBase ViewModelを自動的に作成できますか?
ありがとうございます。
私のシナリオでは、プロパティが変更されるたびにOnPropertyChangedイベントを発生させたいOnPropertyChangedイベントをViewModelのプロパティのセッターで明示的に呼び出さなくても起動できますか?
プロパティ値が変更されるたびにnameof(property)を自動的に渡すBase ViewModelを自動的に作成できますか?
ありがとうございます。
コードを記述せずにPropertyChanged
イベントを発生させることはできますか? はい Fodyと呼ばれるコールを注入するサードパーティのライブラリを使用する必要があります。 https://github.com/Fody/PropertyChanged
あなたは少しコードを書くために喜んでいる場合、あなたは、基本クラスでこれを置くことができます(C#6のために、あなたはCallerMemberName
ためSystem.Runtime.CompilerServices
が必要ですか?。)::あなたはでそれを見つけることができます
protected void OnPropertyChanged([CallerMemberName]string propertyName = "")
{
PropertyChanged?.Invoke(this, new PropertyChangedEventargs(propertyName));
}
はそうあなたの財産セッターにあなただけの
set
{
backingField = value;
OnPropertyChanged();
}
Fodyを使用すると、すべてのセッターで明示的に呼び出す必要はなく、属性を使用してINotifyPropertyChangedを呼び出すことができます。
[ImplementPropertyChanged]
public class Person
{
public string GivenNames { get; set; }
public string FamilyName { get; set; }
}
を入れて、あなたの入力をありがとうございました。 –
何がありますか?この場合はどうしますか? PropertyChangedがnullの場合にInvokeが呼び出されないようにしますか? –
@EstebanVerbel正確に。スレッドセーフです。 '?.Invoke'は、C#6でイベントを発生させるための好ましい方法です。左の引数がnullの場合、式を* return *にします。それ以降のコードは実行されません。 – BradleyDotNET
清算していただきありがとうございます。 –