首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TextBox TextTrimming

TextBox TextTrimming
EN

Stack Overflow用户
提问于 2012-04-19 11:26:32
回答 5查看 28.8K关注 0票数 25

我想在TextBox (而不是TextBlock)上应用TextTrimming选项。

编译器告诉我,TextTrimming选项不是Textbox的有效属性。

我可以做一个花哨的控制,它是一个Textblock,一旦它被点击就会变成一个Textbox,反过来,一旦焦点丢失了,就回到Textblock

在这样做之前,我想知道一个内置函数是否已经存在(或者有一种更聪明的方法)允许您这样做?

编辑:我最后想要的是一个TextBox,它是trim (完整的内容将显示在工具提示中),但是当用户选择TextBox (进入“编辑模式”)时,完整的内容将被显示(没有剪裁),因此用户将能够修改全文。当TextBox失去焦点(返回到“查看模式”)时,内容将再次修剪。

谢谢

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-04-19 12:47:17

试试这样的风格(我增加了背景颜色,以使变化变得明显):

代码语言:javascript
复制
    <Style TargetType="TextBox">
      <Setter Property="Background" Value="Yellow" />
      <Style.Triggers>
        <DataTrigger Binding="{Binding IsKeyboardFocused, RelativeSource={RelativeSource Self}}" Value="false">
          <Setter Property="Template">
            <Setter.Value>
              <ControlTemplate TargetType="TextBox">
                <TextBlock Text="{TemplateBinding Text}"  TextTrimming="CharacterEllipsis" Background="Red" />
              </ControlTemplate>
            </Setter.Value>
          </Setter>
        </DataTrigger>
      </Style.Triggers>
    </Style>
票数 48
EN

Stack Overflow用户

发布于 2016-01-06 16:33:22

丹·普西有一个很好的答案,但是我想添加更多,这样TextBlock的样式就像一个TextBox

下面是我提出的XAML样式:

代码语言:javascript
复制
<Style TargetType="TextBox">
    <Style.Triggers>
        <DataTrigger Binding="{Binding IsKeyboardFocused, RelativeSource={RelativeSource Self}}" Value="False">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="TextBox">
                        <Border BorderThickness="1" CornerRadius="1">
                            <Border.BorderBrush>
                                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                                    <GradientStop Color="#FFABADB3" Offset="0"/>
                                    <GradientStop Color="#FFABADB3" Offset="0.044"/>
                                    <GradientStop Color="#FFE2E3EA" Offset="0.060"/>
                                    <GradientStop Color="#FFE3E9EF" Offset="1"/>
                                </LinearGradientBrush>
                            </Border.BorderBrush>
                            <TextBlock Padding="4,2,0,0" Text="{TemplateBinding Text}" TextTrimming="CharacterEllipsis"/>
                        </Border>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </DataTrigger>
    </Style.Triggers>
</Style>

当控件没有键盘焦点时,如下所示:

这就是获得键盘焦点后控件的样子:

票数 3
EN

Stack Overflow用户

发布于 2012-04-19 11:51:35

我想你要找的是这个

代码语言:javascript
复制
<TextBox Text="{Binding Path=String, Converter={StaticResource StringConverter}, ConverterParameter=Trim:Argument:AnotherArgument}" /> 

我希望它有帮助:)

如果需要,它将调用trim函数并传递任何参数。还可以使用拆分,并将分隔符作为参数传递。

您可以在Binding.Converter 这里上找到更多信息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10227014

复制
相关文章

相似问题

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