[xaml] SubProperty über TemplateBinding
-
Hallo,
ich habe mal wieder eine wahrscheinlich sehr simple Frage. Ich habe
ein ControlTemplate, in dem die Margin Property einer Border über ein
TemplateBinding festgelegt wird. Ich möchte nun aber gern nicht die
komplette Thickness erben, sondern nur die Top, Left und Right Property
und die Bottom Property selbst festlegen.als Pseudocode quasi so :
<Border.Margin> <Thickness Bottom = "3" Left" = {TemplateBinding Margin.Left}" Right= = "{TemplateBinding Margin.Right}" Top = "{TemplateBinding Margin.Top}" /> </Border.Margin>
ist das möglich ? Wenn ja, wie wäre die korrekte Syntax ?
ps: ich habe hier kein spezifisches forum für xaml fragen gefunden, ich hoffe
meine frage findet hier eine heimat :).
-
XAML Fragen gehören hier hin.
Zu deinem Problem: Wieso willst du die
Margin
deinesControl
in deinemControlTemplate
verwenden?Margin
wird immer vom Parent verwendet oder vom Grundsystem von WPF. Wenn du somitMargin
in deinemControlTemplate
verwendest, wird am Ende tatsächlich der doppelte Wert angewendet (1x vom Parent und 1x von deinemControlTemplate
).Grüssli
-
Dravere schrieb:
XAML Fragen gehören hier hin.
Zu deinem Problem: Wieso willst du die
Margin
deinesControl
in deinemControlTemplate
verwenden?Margin
wird immer vom Parent verwendet oder vom Grundsystem von WPF. Wenn du somitMargin
in deinemControlTemplate
verwendest, wird am Ende tatsächlich der doppelte Wert angewendet (1x vom Parent und 1x von deinemControlTemplate
).Grüssli
hallo,
gute frage. bei der control handelt es sich um die expander control. das
template dafür ist schon ein bissel älter. ich habe mal ein bissel mit den
werten gespielt und dein einwand ist natürlich berechtigt, bzw kann ich mir
auch nicht erklären, was ich mir damals bei dem template binding gedacht habe.ulkigerweise ist mir das nie aufgefallen mit den doppelten margins. das problem
ist somit praktisch gelöst. theoretisch würde mich die ursprüngliche frage aber
dennoch weiter interessieren.vielen dank für die schnelle antwort
-
Das was du gezeigt hast, ist so direkt nicht möglich, da
Thickness
eine Struktur ist. Die Properties dieser Struktur sind ganz normal und man kann an diese nichts binden.Du könntest allenfalls den
Converter
vonTemplateBinding
verwenden. Dann sähe dies wohl ca. so aus:<Border Margin="{TemplateBinding Margin, Converter={StaticResource ReplaceBottomConverterKey}, ConverterParameter=3}"> ... </Border>
Warnhinweis:
Liebe Kinder, bitte nicht nachmachenGrüssli
-
Nochmals vielen Dank für die Antwort.