我正在制作一个自定义标签
Border CornerRadius="10" Background="#428bca" Height="{TemplateBinding Height}" Width="{TemplateBinding Width}">
<ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Center" >
<TextBlock.Foreground>
White
</TextBlock.Foreground>
</ContentPresenter>
</Border>
我想以这样的方式绑定(bind) ContentPresenter
的内容,当我更改内容的长度时,边框的 size
(宽度和高度)将得到自动调整,这样我就不必手动更改它。
最佳答案
以下标签应该可以满足您的要求。请注意,如果它是例如的 child 对于 Grid,您必须将对齐属性设置为默认 Stretch
的其他值,因为否则 Label 将由 Panel 调整大小(例如调整为它所占用的 Grid 单元格的大小) .
<Label Content="Hello, World."
BorderBrush="Black"
BorderThickness="2"
HorizontalAlignment="Left"
VerticalAlignment="Top">
<Label.Template>
<ControlTemplate TargetType="Label">
<Border CornerRadius="10" Background="#428bca"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
<ContentPresenter Margin="{TemplateBinding Padding}"
Content="{TemplateBinding Content}"
ContentTemplate="{TemplateBinding ContentTemplate}"/>
</Border>
</ControlTemplate>
</Label.Template>
</Label>
为了对所有标签重用此 ControlTemplate,您可以将其置于默认标签样式中:
<Style TargetType="Label">
<Setter Property="HorizontalAlignment" Value="Left"/>
<Setter Property="VerticalAlignment" Value="Top"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Label">
<Border CornerRadius="10" Background="#428bca"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
<ContentPresenter Margin="{TemplateBinding Padding}"
Content="{TemplateBinding Content}"
ContentTemplate="{TemplateBinding ContentTemplate}"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
关于c# - 绑定(bind)ContentPresenter的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22064322/