Ich habe einen Button-Kontrollstil und ich möchte den Padding von dem ändern, was die datengebundene Version für ein Glyph ist, das einen Offset von 2 Pixeln benötigt. Ich werde SimpleButton von SimpleStyles.xaml als Beispiel verwenden (... zeigt, wo der Auslösecode aus Gründen der Prägnanz entfernt wurde):
%Vor%Was ich tun möchte, ist ein zusätzlicher Rand hinzuzufügen, wo Padding="{TemplateBinding Padding}". Etwas wie Padding="{TemplateBinding Padding} + 2,0,0,0".
Gibt es dafür eine XAML-Syntax? Wenn nicht, gibt es einen besten Ansatz, wenn Sie dies in Code (Decorator?) Tun?
Derzeit analysiert XAML Ausdrücke in der Binding-Syntax usw. nicht. Sie können jedoch ein IValueConverter oder IMultiValueConverter , um sich selbst zu helfen :
XAML:
%Vor%IValueConverter-Code hinter:
%Vor%Es gibt ein Produkt, das unter Blendables.com namens Eval Binding und Einfache Bindung macht das jetzt. (Das Produkt ist nicht kostenlos) Sehen Sie sich das Whitepaper hier an.
Zum Beispiel für den unteren XAML-Code benötigen Sie einen Konverter, um die Operation auszuführen.
%Vor%Aber mit EvalBinding können Sie wie folgt tun:
%Vor%Nein, nicht in dieser Version von XAML - verwenden Sie einen Wertkonverter, um Ihre Berechnungen durchzuführen.
Sehen Sie sich die ExpressionConverter
in dieser Bibliothek an.
Sie können einige einfache Berechnungen durchführen, indem Sie Transformationen nutzen.
Sehen Sie sich diesen Trick an, den Charles Petzold vor langer Zeit aufgestellt hat: Ссылка
Leider scheint es Ihrem speziellen Szenario nicht zu helfen ... da Sie nur die linke Eigenschaft des Thickness-Typs für das Padding ändern möchten ... und das ist keine Abhängigkeitseigenschaft, an die Sie allein binden können.
Ich habe mich jedoch gedrängt gefühlt, diese Antwort hinzuzufügen, falls es anderen hilft, die über Google oder eine andere Suchmaschine ihren Weg hierher finden.
Tags und Links wpf styles data-binding templates