![](/img/trans.png)
[英]WPF TextBlock.TextTrimming Not Working With Auto-sized ColumnDefinition
[英]Textblock.TextTrimming not working inside a grid
我的布局有一個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>
第二列代碼:
<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" />
</Grid>
為了使其工作,您需要第二個網格中的最后一列具有*大小,否則它將告訴TextBlock
它具有所需的空間,即使它沒有。 自動調整大小的列不會將內容限制為網格的邊界。 但是,如果使用單個TextBlock
和多個運行執行此操作,您可能會獲得更好的結果:
<TextBlock FontSize="18" TextTrimming="CharacterEllipsis">
<Run Text="{Binding Path=FeedItems.Count}" FontWeight="SemiBold" />
<Run Text=" items from " />
<Run Text="{Binding Path=Name}" />
</TextBlock>
請注意,您只能在.NET 4.0中綁定Run.Text。 如果您在使用框架的舊版本,你必須創建自己的BindableRun,因為看到這是非常簡單的在這里 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.