0

基本上在我的 Windows Phone 应用程序中,我曾经通过绑定在列表中显示名称。在这种情况下,我想限制名称只显示前 5 组字符,以避免不必要的换行。

在我看来,我们可以Converter在将名称绑定到文本框时使用该选项来实现这一点。StringFormat但是是否有任何其他选项可以通过 XAML 本身在绑定时使用选项来实现这一点。你能请任何人帮助我吗?

<TextBox Text="{Binding Path=Name, StringFormat=??}" TextWrapping="NoWrap"/>
4

1 回答 1

0

您可以使用TextTrimminga 的属性TextBlock并创建一个包含 a 的样式TextBlockTextBox如下所示:

样式 1

<!-- Trims text but shows all on-focus -->
<Style TargetType="TextBox" x:Key='TrimmingStyle1'>
    <Style.Triggers>
        <DataTrigger Binding="{Binding IsKeyboardFocused, RelativeSource={RelativeSource Self}}" Value="false">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="TextBox">
                        <Border BorderThickness='1' Background='#ffefefef' BorderBrush='LightBlue'>
                            <TextBlock Text="{TemplateBinding Text}" TextTrimming="None" Margin='4,1' />
                        </Border>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </DataTrigger>
    </Style.Triggers>
</Style>

风格 2

<!-- Trims text always, non editable -->
<Style TargetType="TextBox" x:Key='TrimmingStyle2'>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="TextBox">
                <Border BorderThickness='1' Background='#ffefefef' BorderBrush='LightBlue'>
                    <TextBlock Text="{TemplateBinding Text}" TextTrimming="None" Margin='4,1' />
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

用法

<TextBox Style="{StaticResource TrimmingStyle1}" ... />
<TextBox Style="{StaticResource TrimmingStyle2}" ... />

请务必更改文本绑定以匹配您的应用程序数据。另请注意,修剪取决于文本框的大小

来源:使用样式模拟 TextBox 上的 TextTrimming

于 2013-05-22T20:47:53.897 回答