2008-11-19 19 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子類,自動做了類似的事情,然後使用每一列模板中。