Вы можете связать содержимое ячейки с фактическим числом, шириной содержащего столбца и с желаемым размером TextBlock
. Затем используйте конвертер, чтобы преобразовать, выберите содержание соответственно. Pseduo-XAML:
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock x:Name="_textBlock">
<TextBlock.Content>
<MultiBinding Converter="{StaticResource MyConverter}">
<Binding Path="."/>
<Binding Path="ActualWidth" RelativeSource="{RelativeSource Ancestor, AncestorType={GridViewColumn}}"/>
<Binding Path="DesiredSize.Width" ElementName="_textBlock"/>
</MultiBinding>
</TextBlock.Content>
</TextBlock>
</Datatemplate>
</GridViewColumn.CellTemplate>
Pseduo-код:
public class MyConverter : IMultiValueConverter
{
public object Convert(...)
{
object content = values[0];
double actualWidth = (double)values[1];
double desiredWidth = (double)values[2];
if (desiredWidth > actualWidth)
{
return "######";
}
return content;
}
}
Кроме этого, вы можете написать свой собственный подкласс TextBlock
, который выполняет аналогичные действия автоматически, а затем использовать его внутри каждого шаблона столбца.