Ich habe eine WPF-App, die einen Webservice verwendet. Es ist mein Webservice und App, so kann ich Änderungen auf beiden Seiten vornehmen. In der Reference.cs Datei, die von Visual Studio automatisch genereated wird verwendet er diesen Code für die Eigenschaft geänderte Ereignis:Ändern Sie Referenzgleichheitszeichen in der Referenz.cs
[System.Runtime.Serialization.DataMemberAttribute()]
public string Value {
get {
return this.ValueField;
}
set {
if ((object.ReferenceEquals(this.ValueField, value) != true)) {
this.ValueField = value;
this.RaisePropertyChanged("Value");
}
}
}
Für Strings obwohl das, was würde Ich mag, ist dies:
[System.Runtime.Serialization.DataMemberAttribute()]
public string Value {
get {
return this.ValueField;
}
set {
if ((object.ReferenceEquals(this.ValueField, value) != true)) {
if (this.ValueField != value)
{
this.ValueField = value;
this.RaisePropertyChanged("Value");
}
}
}
}
Auf diese Weise Das Ereignis "Eigenschaft geändert" würde nicht ausgelöst, wenn der Wert gleich ist. Warum dies ein Problem ist, weil ich den OnPreviewTextInput eines Textfelds höre und den Wert programmgesteuert ändere, dann geht das Ereignis zweimal aus, einmal, weil ich es geändert habe und einmal, weil wpf es über die Bindung geändert hat.
Danke,
Basierend darauf, wie meine Lösung aufgeteilt wird, die nicht funktioniert, gibt es eine Möglichkeit, die Methode in der automatisch generierten referenz.cs-Datei zu überschreiben? – odyth
@odyth - Ich bearbeite manchmal reference.cs-Dateien, wenn keine andere Option angezeigt wird. Das Problem in diesen Fällen besteht darin, dass Sie sich daran erinnern müssen, dass Sie die Datei bearbeitet haben, und diese Änderungen bei jeder Änderung erneut vornehmen. – Joon