如果我的文件名和路径不适合TextBlock
,我想显示省略号。
例如,如果我的文件名和路径类似于:
C:\examples\example\folderA\folderB\folderC\myfilename.txt
我想在我的TextBlock
中这样展示它:
C:\examples...myfilename.txt
更新:,我知道我可以使用TextTrimming
在末尾设置省略号。但我需要一种方法把省略号放在中间的某个地方。
发布于 2017-09-19 21:15:48
我修改了Rachel提供的XAML,以修复窗口大小上出现的路径中的额外空间。
<Window.Resources>
<local:FileNameConverter x:Key="FileNameConverter" />
<local:FilePathConverter x:Key="FilePathConverter" />
<Style x:Key="CustomFileText" TargetType="{x:Type TextBox}">
<Style.Triggers>
<DataTrigger Binding="{Binding IsKeyboardFocused, RelativeSource={RelativeSource Self}}" Value="false">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="TextBox">
<Grid>
<TextBox Grid.ColumnSpan="2" IsHitTestVisible="False"/>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition MaxWidth="{Binding ActualWidth, ElementName=PART_DirMaxWidth}"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Canvas x:Name="PART_Canvas">
<TextBlock x:Name="PART_DirMaxWidth" Margin="0" Padding="0" Text="{TemplateBinding Text, Converter={StaticResource FilePathConverter}}" Visibility="Hidden"/>
<TextBlock Width="{Binding ActualWidth, ElementName=PART_Canvas}" Margin="0" Padding="0" Text="{TemplateBinding Text, Converter={StaticResource FilePathConverter}}" TextTrimming="CharacterEllipsis" Background="Transparent"/>
</Canvas>
<StackPanel Grid.Column="1" Orientation="Horizontal">
<TextBlock Margin="0" Padding="0" Text="\" Background="Transparent"/>
<TextBlock Margin="0" Padding="0" Text="{TemplateBinding Text, Converter={StaticResource FileNameConverter}}" Background="Transparent"/>
</StackPanel>
</Grid>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</Window.Resources>
https://stackoverflow.com/questions/37466240
复制相似问题