WPF DataGridコントロールが自動的に生成された数字の簡単な方法である - まだ注文を削除した後、

クリエイティブコモンズライセンス 著作権:帰属、紙ベースを作成するために他人を許可し、(同じライセンスで元のライセンス契約に基づいて用紙配布する必要がありますクリエイティブコモンズ

WPF DataGridコントロールが自動的に生成された数字の簡単な方法である - まだ注文を削除した後、

自動的に生成されたデータグリッドコントロールの数の簡単な方法

数生成DataGridコントロール一般に二つの方法で、アイデアは、別個の制御と背景データとの結合にリストされた最初の数の方法を作成することです。第二の方法は、結合しないロードするために直接行に、行ヘッダは、シリアル番号を追加します。これとは対照的に、第二の方法は、第二の方法を紹介し、主にので、ここでは、より簡単です。

図エフェクト
レンダリング
受信コードXAML

<DataGrid x:Name="TCurveDataGrid" Height="280" Width="150"
 AlternatingRowBackground="LightBlue" AlternationCount="2" AutoGenerateColumns="False" 
 BorderBrush="Black" BorderThickness="1" ScrollViewer.HorizontalScrollBarVisibility="Disabled" 
 LoadingRow="TCurveDataGrid_LoadingRow"
 HeadersVisibility="All">
                        <DataGrid.Columns>
                            <DataGridTextColumn x:Name="Parameter" Header="参数" Binding="{Binding Parameter,UpdateSourceTrigger=PropertyChanged}" Width="75"  />
                            <DataGridTextColumn x:Name="Value" Header="数值" Binding="{Binding Value,UpdateSourceTrigger=PropertyChanged}" Width="75"/>
                        </DataGrid.Columns>
                    </DataGrid>

背景C#コード

//在载入行的时候在行表头添加编号		
private void TCurveDataGrid_LoadingRow(object sender, DataGridRowEventArgs e)
{
     e.Row.Header = (e.Row.GetIndex() + 1).ToString();
}

上記の方法本問題

DataGridコントロールに削除操作を実行するときLoadingRowイベントをトリガしませんので、それは、障害後に削除されます。

前に削除入力し
最初の削除を入力
[削除入力
あなたは、削除入力した後、

最終的な解決策

PreviewKeyUpイベントを追加して、イベントハンドラに含まれる制御項目を削除タイプアップデートする方法を確立します。
レセプションXAMLコード

<DataGrid x:Name="TCurveDataGrid" Height="280" Width="150"
 AlternatingRowBackground="LightBlue" AlternationCount="2" AutoGenerateColumns="False" 
 BorderBrush="Black" BorderThickness="1" ScrollViewer.HorizontalScrollBarVisibility="Disabled" 
 LoadingRow="TCurveDataGrid_LoadingRow" PreviewKeyUp="TCurveDataGrid_PreviewKeyUp"
 HeadersVisibility="All">
                        <DataGrid.Columns>
                            <DataGridTextColumn x:Name="Parameter" Header="参数" Binding="{Binding Parameter,UpdateSourceTrigger=PropertyChanged}" Width="75"  />
                            <DataGridTextColumn x:Name="Value" Header="数值" Binding="{Binding Value,UpdateSourceTrigger=PropertyChanged}" Width="75"/>
                        </DataGrid.Columns>
                    </DataGrid>

背景C#コード

//在载入行的时候在行表头添加编号		
private void TCurveDataGrid_LoadingRow(object sender, DataGridRowEventArgs e)
{
     e.Row.Header = (e.Row.GetIndex() + 1).ToString();
}
//在键入delete后,刷新控件所包含的item以保持表头序号的连续。	
private void TCurveDataGrid_PreviewKeyUp(object sender, KeyEventArgs e)
{
    if (TCurveDataGrid.SelectedIndex < 0) return;
    var dgr = (DataGridRow)(TCurveDataGrid.ItemContainerGenerator.ContainerFromIndex(TCurveDataGrid.SelectedIndex));
    if (e.Key == Key.Delete && !dgr.IsEditing)
    {
       TCurveDataGrid.Items.Refresh();
    }
}

結果は

前に削除入力し
最初の削除を入力
[削除入力
あなたは、削除入力した後、

問題は問題ではありません

2行ヘッダーのデフォルトの最後の行は、私は1のための最初のデフォルトとWPF、関連する2行ヘッダーのデフォルトを一覧表示することが可能であると思いますが、取得することを望んで、そのような方法として、*などの他のシンボルを、交換する必要があるのか​​分かりませんポインティング。
ヘッダ2の最後の行

おすすめ

転載: blog.csdn.net/weixin_42232445/article/details/93733852