我在做一个custom label
Border CornerRadius="10" Background="#428bca" Height="{TemplateBinding Height}" Width="{TemplateBinding Width}">
<ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Center" >
<TextBlock.Foreground>
White
</TextBlock.Foreground>
</ContentPresenter>
</Border>我想以这样的方式绑定ContentPresenter的内容,当我更改内容的长度时,边框的size(宽度和高度)将自动调整,这样我就不必手动更改它。
发布于 2014-02-28 03:25:29
下面的标签应该可以执行您想要的操作。请注意,如果它是一个网格的孩子,你必须将对齐属性设置为默认Stretch之外的其他值,因为否则标签将被面板调整大小(例如,调整到它所占据的网格单元的大小)。
<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>https://stackoverflow.com/questions/22064322
复制相似问题