On dirait que l'ellipse dans ControlTemplate ne reçoit pas la frontière, mais pourquoi?
<Window.Resources> <ControlTemplate x:Key="EllipseControlTemplate" TargetType="{x:Type TextBox}"> <Grid> <Ellipse Width="{TemplateBinding ActualWidth}" Height="{TemplateBinding ActualHeight}" Stroke="{TemplateBinding Foreground}" StrokeThickness="{TemplateBinding BorderThickness}" /> <ScrollViewer Margin="0" x:Name="PART_ContentHost" HorizontalAlignment="Center" VerticalAlignment="Center"/> </Grid> </ControlTemplate> </Window.Resources> <Grid> <TextBox Template="{DynamicResource EllipseControlTemplate}" Foreground="Green" BorderThickness="15" /> </Grid>
4 Réponses :
Vous avez besoin Borderthickness code> n'est pas si facile, il s'agit d'une structure de type
épaisseur code> (et peut être composite, comme
Borderthickness = ". 0, 0,0,2 , 2 " code>), tandis que
strokethickness code> de type
double code>. P>
ivenueconverter code> pour faire ce travail de liaison. P>
Je m'excuse, j'ai déjà trouvé la réponse. Voir la réponse que j'ai écrite ... Vous vouliez probablement dire ça.
Bon pour vous :) Néanmoins, le mien était plus tôt :)
C'est vrai! Je choisirai la vôtre comme solution si vous mentionnez la différence de type, c'est la clé ici.
Il y avait nommé Gotcha: Borderthickness code> est le type d'épaisseur code> et
Strokethickness code> est le type de
double code>. Nous avons donc besoin
ivenueconverter code>. P>
Vous pouvez également utiliser la propriété DataContext de l'ellipse: espère que cela aide! p> p>
Une autre solution possible ... (Parce que j'aime seulement utiliser des ihancesconverters en dernier recours, et la modification du DataContext de l'ellipse pourrait ne pas fonctionner si vous en avez besoin pour être réglé sur autre chose):
<Ellipse StrokeThickness="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=BorderThickness.Top}" />
NIT-Choisissez cette excellente réponse: je pense que Borderthickness.left code> est en fait la valeur préférée à utiliser car elle est la première valeur. Voir Cette réponse sur la marge mais La commande est la même pour l'épaisseur .