Ich versuche, 2 WegeWarum kommt die 2-Wege-Bindung nicht funktionieren
In meinem Viewmodel zu binden, habe ich
private Temporary _selectedCompany;
public Temporary SelectedCompany
{
get
{
return this._selectedCompany;
}
set
{
if (this._selectedCompany == value || value == null)
return;
this._selectedCompany = value;
this.SelectedCompany.CompanyName = "TestName";
base.OnPropertyChanged("SelectedCompany");
}
}
Temporary
ist eigentlich eine Klasse ähnlich eine Klasse, die Sie tun würden für eine CompanyAddress (Name, Land, Telefon usw.) und wurde von EntityFramework erstellt.
In der entsprechenden Ansicht, die XAML ist
<local:CompanyDetail CompanyName="{Binding SelectedCompany.CompanyName}"/>
In Code hinter der Zollkontrolle
// Dependency Property
public static readonly DependencyProperty CompanyNameProperty =
DependencyProperty.Register("CompanyName", typeof(string),
typeof(CompanyDetail), null);
// .NET Property wrapper
public string CompanyName
{
get { return (string)GetValue(CompanyNameProperty); }
set { SetValue(CompanyNameProperty, value); }
}
gibt nichts in dem Ansichtsmodell ist. Es gibt die folgende XAML
<TextBox Text="{Binding CompanyName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, RelativeSource={RelativeSource AncestorType=UserControl, AncestorLevel=1, Mode=FindAncestor}}" />
Also, wenn die Kontrollen geladen und auf dem Bildschirm angezeigt, sehe ich den Wert „Testname“ in der TextBox
aber, wenn ich den Wert zu ändern, indem Sie und klicken Sie dann auf eine Schaltfläche OK I kann sehen, dass der Wert nicht aktualisiert wurde.
Ich nehme an, es hat nichts mit INotifyPropertyChanged zu tun, weil ich denke, es ist alles ein Referenztyp auf irgendeine Weise?
Was mache ich falsch?
Sind Sie sicher, dass AncestorLevel = 1? Sie müssen es nicht angeben, wenn Sie AncestorType angeben –