Können Sie "math" in WPF-Formatvorlagen ausführen, die datengebunden sind?

8

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?

    
Geoff Cox 29.11.2008, 18:40
quelle

6 Antworten

8

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%     
user7116 30.11.2008, 18:50
quelle
3

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%     
Jobi Joy 29.11.2008 20:54
quelle
2

Nein, nicht in dieser Version von XAML - verwenden Sie einen Wertkonverter, um Ihre Berechnungen durchzuführen.

    
Paul Betts 29.11.2008 20:16
quelle
2

Sehen Sie sich die ExpressionConverter in dieser Bibliothek an.

    
Kent Boogaart 30.11.2008 18:21
quelle
1

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.

    
cplotts 03.08.2011 23:09
quelle
1

Schauen Sie sich den MathConverter an: Ссылка

Dort können Sie einen Ausdruck als Converter-Parameter senden, wobei @VALUE der Wert ist, an den Sie binden:

%Vor%     
cederlof 25.03.2013 16:36
quelle

Tags und Links