Nur OneWayToSource-Bindungsmodus zulassen
Ich habeEntitiesUserControl
verantwortlich fürEntitiesCount
Abhängigkeitseigenschaft:
public static readonly DependencyProperty EntitiesCountProperty = DependencyProperty.Register(
nameof(EntitiesCount),
typeof(int),
typeof(EntitiesUserControl),
new FrameworkPropertyMetadata(1, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault));
public int EntitiesCount
{
get { return (int)this.GetValue(EntitiesCountProperty); }
set { this.SetValue(EntitiesCountProperty, value); }
}
Ein anderes (primäres) Steuerelement enthältEntitiesUserControl
und lese die Eigenschaft durch Binden:
<controls:EntitiesUserControl EntitiesCount="{Binding CountOfEntities, Mode=OneWayToSource}" />
CountOfEntities
-Eigenschaft im Ansichtsmodell speichert und verarbeitet nur die Änderung des Zählwerts:
private int countOfEntities;
public int CountOfEntities
{
protected get { return this.countOfEntities; }
set
{
this.countOfEntities = value;
// Custom logic with new value...
}
}
Ich braucheEntitiesCount
Eigentum vonEntitiesUserControl
seinschreibgeschütz (Primärsteuerung darf es nicht ändern, nur lesen) und es funktioniert nur so, weilMode=OneWayToSource
explizit deklariert. Aber wenn deklarierenTwoWay
mode oder nicht explizit mode deklarieren, dannEntitiesCount
könnte von außen umgeschrieben werden (zumindest direkt nach der Bindungsinitialisierung, da es passiertnac Standardwert für die Abhängigkeitseigenschaft (zugewiesen).
Ich kann die schreibgeschützte Abhängigkeitseigenschaft 'legal' aufgrund von Bindungseinschränkungen nicht ausführen (am besten beschrieben in diesemAntworte), also muss ich Bindungen mit einem anderen Modus als @ verhindeOneWayToSource
. Es wäre am besten, ein paar @ zu hab OnlyOneWayToSource flag likeBindsTwoWayByDefault
Wert inFrameworkPropertyMetadataOptions
Aufzählung ...
Irgendwelche Vorschläge, wie dies zu erreichen ist?