2016-07-18 18 views
1

Hier ist ein vereinfachtes Beispiel, was ich brauche:
Ich habe Klasse A, die eine Eigenschaft Name haben. Die Name-Eigenschaft wird asynchron geändert und es gibt keine Möglichkeit zu wissen, wann die Änderung auftritt.
Um den aktualisierten Wert in der Ansicht anzuzeigen, verdrahtete ich ein propertychanged Ereignis darin und binde es mit {Binding A.Name}. In der VM funktioniert es gut.
Aber in meinem Fall, es gibt eine Menge von benutzerdefinierten Eigenschaften, die in der Klasse A. nicht einmal propertychanged Ich denke sein sollen, ist in der Klasse A angehoben, erhält die Name Eigenschaft in AViewModel sollte die zu OnPropertyChangedErkennen, wenn eine OnPropertyChanged auftritt

benachrichtigt und erhöht

Gibt es eine Möglichkeit, dies zu tun?

C#:

public class A : BaseViewModel 
{ 
    string name; 
    public string Name 
    { 
     get { return name; } 
     set { Set(()=> Name, ref name, value); } 
    } 
} 

public class AViewModel : BaseViewModel 
{ 
    A a; 
    public A A 
    { 
     get { return a; } 
     set { Set(()=> A, ref a, value); } 
    } 
    public string Name 
    { 
     get { return A.Name; } 
     set { Set(()=> Name, ref A.Name, value); } 
    } 
} 

XAML:

<TextBox Text="{Binding Name}" /> 
+2

haben Sie in der Setter auf Ihrem Namen "RaisePropertyChanged" versucht Eigenschaft, dann 'UpdateSourceTrigger = PropertyChanged' nach der Bindung an die Textbox? – tCoe

Antwort

1

Die Klasse A ist ein klassisches C# Ereignis, zum Beispiel, so die AViewModel es abonnieren.

2

versuchen, die "RaisePropertyChanged" auf den Namen Objekt hinzuzufügen:

string name; 
    public string Name 
    { 
     get { return name; } 
     set { Set(()=> Name, ref name, value); RaisePropertyChanged();} 
    } 

Dann schließen die Update-Trigger auf der Xaml:

<TextBox Text="{Binding Name}" UpdateSourceTrigger=PropertyChanged /> 
Verwandte Themen