我有一个像这样定义的简单TextBlock
<StackPanel>
<Border Width="106"
Height="25"
Margin="6"
BorderBrush="Black"
BorderThickness="1"
HorizontalAlignment="Left">
<TextBlock Name="myTextBlock"
TextTrimming="CharacterEllipsis"
Text="TextBlock: Displayed text"/>
</Border>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)
哪个输出像这样

这会让我"TextBlock:显示文字"
string text = myTextBlock.Text;
Run Code Online (Sandbox Code Playgroud)
但有没有办法获得实际显示在屏幕上的文字?
含义"TextBlock:显示......"
谢谢
有没有办法TextBlock在左侧指定文本修剪?
我已经设法完成三个场景中的两个(第三个是我需要的场景):
定期修剪
<TextBlock
VerticalAlignment="Center"
Width="80"
TextTrimming="WordEllipsis"
Text="A very long text that requires trimming" />
// Result: "A very long te..."
Run Code Online (Sandbox Code Playgroud)左修剪
<TextBlock
VerticalAlignment="Center"
Width="80"
FlowDirection="RightToLeft"
TextTrimming="WordEllipsis"
Text="A very long text that requires trimming." />
// Result: "...A very long te"
Run Code Online (Sandbox Code Playgroud)左边修剪文本末尾的位置
// Desired result: "...uires trimming"
Run Code Online (Sandbox Code Playgroud)有谁知道这是否可能?谢谢.
这是一个相对简单的问题:
我可以使用以下方法修剪带有省略号的文本:
<TextBlock Text="{Binding}" TextTrimming="CharacterEllipsis"/>
Run Code Online (Sandbox Code Playgroud)
它会给我一些东西:
"这句话太长了"
=>
"这句话我..."
这一切都很棒,但我真正想要的是:
"这句话......:"/"这句话......:"
我正在寻找的是椭圆后面的冒号.有没有一种简单的方法来实现这一目标?
编辑:
对困惑感到抱歉.
我想将默认的省略号字符串从'...'更改为'...:'.同样,我将在文本字符串本身中包含一个冒号.这样,我将始终显示冒号.同样,在任何情况下,一切都应该在一条线上.
这里有几个可以接受的结果:
足够短:
方式太......
<TextBlock Width="100" Text="The quick brown fox jumps over the lazy dog" TextTrimming="WordEllipsis">
<TextBlock.ToolTip>
<ToolTip DataContext="{Binding Path=PlacementTarget, RelativeSource={x:Static RelativeSource.Self}}">
<TextBlock Text="{Binding Text}"/>
</ToolTip>
</TextBlock.ToolTip>
</TextBlock>
Run Code Online (Sandbox Code Playgroud)
如何ToolTip仅在文本修剪时显示?就像windows desktp快捷方式图标一样.
如果您运行此代码并最小化/最大化窗口的宽度
<TextBlock TextTrimming="WordEllipsis" >
<Run Text="I want that this rectangle will be placed "/>
<Rectangle Fill="Black" Width="20" Height="10" />
<Run Text=" here when I minimize width of the window"/>
</TextBlock>
Run Code Online (Sandbox Code Playgroud)
你会看到Rectange会转移到左侧.

是WPF中的错误吗?
有没有一种简单的方法可以让TextTrimming与ContentPresenter一起使用?
我已经将TextBlock和AccessText的样式设置为将TextTrimming设置为CharacterEllipsis,但是ContentPresenter没有选择它.我可以将ContentPresenter更改为AccessText或TextBlock并将其设置在那里,但模板只处理文本内容.
有什么建议?
谢谢!
我的布局有一个3列网格,每个网格的宽度都设置为Width="*".对于中间(第二)网格,我有另外3列网格,每个网格包含它自己的文本块,并且列网格宽度再次设置为Width="*".
调整窗口大小时,网格会按预期调整大小,但如果文本超出网格边界,则第3个文本块不会被修剪.我有文本框设置TextTrimming="WordEllipsis"和TextWrapping="Wrap",并且由于某种原因没有强制执行属性.
这是我的一些代码:
布局网格:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition MinWidth="150" MaxWidth="300" Width="1*" />
<ColumnDefinition Width="Auto"/>
<ColumnDefinition MinWidth="150" MaxWidth="500" Width="1*" />
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="2*"/>
</Grid.ColumnDefinitions>
</Grid>
Run Code Online (Sandbox Code Playgroud)
第二列代码:
<Grid Grid.Column="2" VerticalAlignment="Bottom" HorizontalAlignment="Left" Margin="5" Width="Auto">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Path=FeedItems.Count}" Foreground="White" FontSize="18" Width="Auto" FontWeight="SemiBold" />
<TextBlock Text=" items from " Foreground="White" FontSize="18" Width="Auto" Grid.Column="1" />
<TextBlock Text="{Binding Path=Name}" Foreground="White" FontSize="18" Grid.Column="2" TextTrimming="CharacterEllipsis" HorizontalAlignment="Left" Width="Auto" TextWrapping="NoWrap" ClipToBounds="True" /> …Run Code Online (Sandbox Code Playgroud) 我有一个ComboBox,显示各种长度的文本.对于不长的文本,没有问题.对于长度超过ComboBox宽度的文本,我想修剪文本并在末尾添加"..."(省略号)以正确显示它们.底线是我不想改变ComboBox的宽度.有谁知道如何做到这一点?
为什么 TextTrimming 对第一个 TextBlock 有效,而对第二个 TextBlock 无效?我在我的 xaml 上使用 LineBreaks,这是我需要显示的文本的一部分。
代码:
<Window x:Class="WpfApplication2.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid VerticalAlignment="Center">
<StackPanel>
<TextBlock TextTrimming="WordEllipsis" TextWrapping="Wrap" Width="20" Height="20" Background="Yellow">
1 2 3 4 5
</TextBlock>
<TextBlock TextTrimming="WordEllipsis" TextWrapping="Wrap" Width="20" Height="20" Background="Aqua">
1
<LineBreak/>
2
<LineBreak/>
3
<LineBreak/>
4
<LineBreak/>
5
</TextBlock>
</StackPanel>
</Grid>
Run Code Online (Sandbox Code Playgroud)
输出:

我有以下ComboBox
<ComboBox x:Name="TaskText" Text="{Binding TaskNameBinding}" ItemsSource="{Binding
taskList, ElementName=MainWin}" SelectedValuePath="_id" DisplayMemberPath="_name"
Background="Yellow" Padding="0" Margin="0" BorderThickness="0" Width="90"/>
Run Code Online (Sandbox Code Playgroud)
我希望文字环绕适用于本组合框,并遵循代码片段从答案在这里
<ComboBox x:Name="TaskText" ItemsSource="{Binding taskList, ElementName=MainWin}"
SelectedValuePath="_id" DisplayMemberPath="_name" Background="Yellow" Padding="0"
Margin="0" BorderThickness="0" Width="90">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding TaskNameBinding}"
TextTrimming="CharacterEllipsis" />
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
Run Code Online (Sandbox Code Playgroud)
但是这个模板打破了绑定,组合框没有显示任何值.任何帮助,将不胜感激