私はWPFアプリケーションを構築しています。私はDataGridがExcelのやり方とよく似た列を非表示にしたいと思っています。私はオプションとして '列を隠す'とポップアップする右クリックメニューを持っています。ここではそれがどのように動作するかです:WPF DataGridヘッダを選択したセルとして扱うには?
if (dgfinal_Copy.CurrentCell.Column == null)
{
}
else
{
int columnIndex = dgfinal_Copy.CurrentCell.Column.DisplayIndex;
dgfinal_Copy.Columns[columnIndex].Visibility = Visibility.Collapsed;
}
私は誰かがグリッドにクリックする前に、ヘッダーをクリックした場合、現在のセルがNULLになるので、if文を追加する必要がありました。また、[2]列のセルをクリックしてから、[0]のヘッダーをクリックしてから、メニューから[hide column]をクリックすると、[2]が非表示になり[0]になります。
これは、ヘッダーの列インデックス(カーソルがある場合)を使用し、現在のセルの列インデックスを使用しない場合は変更したいと考えています。
private void WorkItemsGrid_Hide(object sender, RoutedEventArgs e)
{
if (dgfinal_Copy.CurrentCell.Column == null)
{
}
else
{
int colIn = dgfinal_Copy.SelectedCells[0].Column.DisplayIndex;
System.Windows.MessageBox.Show(colIn.ToString());
int columnIndex = dgfinal_Copy.CurrentCell.Column.DisplayIndex;
dgfinal_Copy.Columns[columnIndex].Visibility = Visibility.Collapsed;
}
}
<MenuItem Header="Unhide All Columns" Click="WorkItemsGrid_UnHide" />
動作しません。問題は、選択されたセルがないことです。ヘッダーのみが選択されます。そして、その時点で選択されているヘッダーの列インデックスが必要です。 – user3486773
@ user3486773私の編集した回答を確認してください – Hank
@ user3486773それは今のところうまくいきましたか? – Hank