首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为TextBlock.TextTrimming启用继承

为TextBlock.TextTrimming启用继承
EN

Stack Overflow用户
提问于 2012-12-18 19:38:16
回答 1查看 878关注 0票数 0

我有一个自定义控件,我想告诉里面的每个TextBlock都使用TextBlock.TextTrimming = CharacterEllipsis,但我不想在每个控件上单独设置该属性。我的意思是,即使后来用户定义了一个ContentTemplate并将其放在我的自定义控件中,并且ContentTemplate包含一些Textblocks,他们也应该自动设置TextBlock.TextTrimming = CharacterEllipsis

我该怎么做?有什么需要帮忙的吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-18 20:37:19

您可以使用property value inheritance创建一个attached property,并将其应用于您的自定义控件,例如在其构造函数中。只要目标对象是TextBlock,attached属性就会将其值复制到目标对象。

代码语言:javascript
复制
public class CustomControl : ContentControl
{
    public CustomControl()
    {
        SetTextTrimming(this, TextTrimming.CharacterEllipsis);
    }

    public static readonly DependencyProperty TextTrimmingProperty =
        DependencyProperty.RegisterAttached(
            "TextTrimming", typeof(TextTrimming), typeof(CustomControl),
            new FrameworkPropertyMetadata(
                default(TextTrimming),
                FrameworkPropertyMetadataOptions.Inherits,
                TextTrimmingPropertyChanged));

    public static TextTrimming GetTextTrimming(DependencyObject obj)
    {
        return (TextTrimming)obj.GetValue(TextTrimmingProperty);
    }

    public static void SetTextTrimming(DependencyObject obj, TextTrimming value)
    {
        obj.SetValue(TextTrimmingProperty, value);
    }

    private static void TextTrimmingPropertyChanged(
        DependencyObject obj, DependencyPropertyChangedEventArgs e)
    {
        var textBlock = obj as TextBlock;

        if (textBlock != null)
        {
            textBlock.TextTrimming = (TextTrimming)e.NewValue;
        }
    }
}

请注意,不需要在派生控件类中定义此TextTrimming附加属性。您还可以在一个特殊的帮助器类中定义它,这个帮助器类甚至不需要从DependencyObject派生。

该属性还适用于在其可视化树中使用TextBoxes的任何其他控件,例如标准ContentControl:

代码语言:javascript
复制
<ContentControl local:CustomControl.TextTrimming="WordEllipsis"
                Content="Some sample text to be trimmed"/>
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13932126

复制
相关文章

相似问题

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