WPF:DataGrid 自動生成行號


  下面給大家分享一種通過 DataGridRowHeader 自動生成 DataGrid 數據行行號的方式。只需一個 ValueConverter 就能搞定。

  1. 值轉換器
     1     class AutoNumberValueConverter : IMultiValueConverter
     2     {
     3         #region IMultiValueConverter 成員
     4 
     5         public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
     6         {
     7             var item = values[0];
     8             var items = values[1] as ItemCollection;
     9 
    10             var index = items.IndexOf(item);
    11             return (index + 1).ToString();
    12         }
    13 
    14         public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
    15         {
    16             return null;
    17         }
    18 
    19         #endregion
    20     }

     

  2. 前台代碼
     1 <Window x:Class="DataGridAutoRowNumberDemo.MainWindow"
     2         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
     3         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
     4         xmlns:demo="clr-namespace:DataGridAutoRowNumberDemo"
     5         Title="MainWindow"
     6         Width="525"
     7         Height="350">
     8     <Window.Resources>
     9         <demo:AutoNumberValueConverter x:Key="autoNumberValueConverter" />
    10     </Window.Resources>
    11     <DataGrid x:Name="dataGrid">
    12         <DataGrid.RowHeaderStyle>
    13             <Style TargetType="{x:Type DataGridRowHeader}">
    14                 <Setter Property="Content">
    15                     <Setter.Value>
    16                         <MultiBinding Converter="{StaticResource autoNumberValueConverter}">
    17                             <Binding />
    18                             <Binding Path="Items" RelativeSource="{RelativeSource AncestorType={x:Type DataGrid}}" />
    19                         </MultiBinding>
    20                     </Setter.Value>
    21                 </Setter>
    22             </Style>
    23         </DataGrid.RowHeaderStyle>
    24     </DataGrid>
    25 </Window>

    就此搞定!
    示例代碼:下載


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM