2008-11-19 54 views
0

我正在寻找复制Excel视觉提示的简单,惯用的方法,即数字太大而无法显示在列中。我有下面的XAML代码:当文本太大时用WPF中的散列替换数字

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

什么,我想如果是在列中的文本是太小,无法显示(即它的裁剪),我想,以取代“#显示的数据'字符。

回答

2

您可以将单元格的内容多重绑定到实际数字,包含列的宽度以及所需的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子类,自动做了类似的事情,然后使用每一列模板中。