当文本太大时用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
子类,自动执行类似的事情,然后在每个列模板中使用它。