[英]WPF TextBlock.TextTrimming Not Working With Auto-sized ColumnDefinition
我正在使用WPF网格作为窗口的布局。 它有两列和任意数量的行。 第一列专门用于标签,第二列用于用户输入字段(例如TextBox,ComboBox等)。 我的要求是:
我试过下面的XAML:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" MinWidth="50" MaxWidth="180" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<TextBlock Text="First Name" TextTrimming="CharacterEllipsis" />
<TextBox Grid.Column="1" Text="{Binding FirstName}" />
<TextBlock Grid.Row="1" Text="Family Name" TextTrimming="CharacterEllipsis" />
<TextBox Grid.Row="1" Grid.Column="1" Text="{Binding FamilyName}" />
<TextBlock Grid.Row="2" Text="Label That Won't Fit in 180 units" TextTrimming="CharacterEllipsis" />
<TextBox Grid.Row="2" Grid.Column="1" Text="{Binding Text}" />
</Grid>
我希望第三行标签“不符合180个单位的标签”将被截断为“标签赢得......”之类的东西。 相反,它被剪切到“标签不会”,一半的“t”丢失。
我尝试了一种在网络上找到的不同方法。
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition x:Name="LabelColumn" Width="Auto" MinWidth="50" MaxWidth="180" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<TextBlock Width="{Binding ActualWidth, ElementName=LabelColumn}" Text="First Name" TextTrimming="CharacterEllipsis" />
<TextBox Grid.Column="1" Text="{Binding FirstName}" />
<TextBlock Grid.Row="1" Width="{Binding ActualWidth, ElementName=LabelColumn}" Text="Family Name" TextTrimming="CharacterEllipsis" />
<TextBox Grid.Row="1" Grid.Column="1" Text="{Binding FamilyName}" />
<TextBlock Grid.Row="2" Width="{Binding ActualWidth, ElementName=LabelColumn}" Text="Label That Won't Fit in 180 units" TextTrimming="CharacterEllipsis" />
<TextBox Grid.Row="2" Grid.Column="1" Text="{Binding Text}" />
</Grid>
它最终处理Expression Blend(有时......),但在运行应用程序时却没有。 运行时,所有标签完全消失。 我通过监视窗口看到所有TextBlocks的实际宽度为0,而LabelColumn.ActualWidth等于80。
还有哪些其他选择?
你需要有MinWidth
和MaxWidth
上TextBlock的设置,如设置MinWidth
和MaxWidth
上栏定义并不总是渲染荣幸。 在绑定表达式中使用ActualWidth
可能会有问题,因为在多个渲染过程中设置了ActualWidth
并且可能会产生不可预测的结果
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.