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?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage