首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ContentPresenter的绑定内容

ContentPresenter的绑定内容
EN

Stack Overflow用户
提问于 2014-02-27 17:32:14
回答 1查看 2.1K关注 0票数 2

我在做一个custom label

代码语言:javascript
复制
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(宽度和高度)将自动调整,这样我就不必手动更改它。

EN

回答 1

Stack Overflow用户

发布于 2014-02-28 03:25:29

下面的标签应该可以执行您想要的操作。请注意,如果它是一个网格的孩子,你必须将对齐属性设置为默认Stretch之外的其他值,因为否则标签将被面板调整大小(例如,调整到它所占据的网格单元的大小)。

代码语言:javascript
复制
<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,可以将其放入默认标签样式中:

代码语言:javascript
复制
<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>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22064322

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档