我有一个使用星号比例的网格控件,例如
<Grid.ColumnDefinitions>
<ColumnDefinition Width="50*" />
<ColumnDefinition Width="100*" />
<ColumnDefinition Width="50*" />
</Grid.ColumnDefinitions>
然而放长TextBlock
溢出的网格会导致比例打乱。例如
<TextBlock Text="Foo" Grid.Column="0" />
<TextBlock Text="Some long text here which overflows" Grid.Column="1" />
<TextBlock Text="Foo" Grid.Column="2" />
这导致中心柱是其他两根柱的两倍以上。如何保持指定的比例?是否可以剪辑内容?
我已经设定TextTrimming="CharacterEllipsis"
on the TextBlocks
但没有运气。
Edit
至关重要的是,网格似乎位于DataTemplate
,粘贴以下内容以观察行为,
<!-- FallbackValue is just a quick hack to get some rows to show at design-time -->
<ListBox ItemsSource="{Binding Foo, FallbackValue=1234}"
HorizontalContentAlignment="Stretch">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="50*" />
<ColumnDefinition Width="100*" />
<ColumnDefinition Width="50*" />
</Grid.ColumnDefinitions>
<TextBlock Text="Foo" Grid.Column="0" />
<TextBlock Text="Some long text here which overflows" TextTrimming="CharacterEllipsis" Grid.Column="1" />
<TextBlock Text="Foo" Grid.Column="2" />
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
这之所以重要是因为我还有另一个Grid
作为 的 兄弟姐妹ListBox
它显示了中显示的列的“标题”ListBox
如下,
<Grid>
... Headers and column definitions here
</Grid>
<ListBox ...>
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
... Matching column definitions here
</Grid>
</DateTemplate>
</ListBox.ItemTemplate>
</ListBox>
因此,列的匹配很重要。
我尝试过绑定ColumnDefinitions
在 - 的里面DataTemplate
到外部的Grid
ColumnDefinitions
但我无法轻松获得对它的绑定引用。