当文本太大时用WPF中的散列replace数字

我正在寻找一种复制Excel视觉提示的简单,惯用的方法,即数字太大而无法显示在列中。 我有以下xaml:

<ListView.View> <GridView> <GridViewColumn ... /> </GridView> <ListView.View> 

而我想要的是,如果列中的文本太小而不能显示(即剪辑),我想用'#'字符replace显示的数据。

您可以将单元格的内容多重绑定到实际的数字,包含列的宽度以及所需的TextBlock大小。 然后使用转换器来转换select相应的内容。 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子类,自动执行类似的事情,然后在每个列模板中使用它。