我有一個DataGrid,其中有HeadersVisibility="None"
。 我想在DataGrid外部創建一個按鈕,它與我在DataGrid的n列上單擊(按順序排列)完全相同。通過單擊不在DataGrid的ColumnHeader上的按鈕對列進行排序c#
我曾嘗試下面的代碼(myDataGrid
是我的DataGrid的名稱):
private void button_Click(object sender, RoutedEventArgs e)
{
DataGridColumn column = myDataGrid.Columns[0];
DataGridColumnHeader columnHeader = GetColumnHeaderFromColumn(column);
columnHeader.OnClick();
}
但功能DataGridColumnHeader.OnClick()無法訪問由於其保護級別。
我也看了看class DataGrid
這是在哪裏namespace System.Windows.Controls
我發現這一點:
public event DataGridSortingEventHandler Sorting;
/// <summary>
/// Protected method which raises the sorting event and does default sort
/// </summary>
/// <param name="eventArgs"></param>
protected virtual void OnSorting(DataGridSortingEventArgs eventArgs)
{
eventArgs.Handled = false;
if (Sorting != null)
{
Sorting(this, eventArgs);
}
if (!eventArgs.Handled)
{
DefaultSort(
eventArgs.Column,
/* clearExistinSortDescriptions */
(Keyboard.Modifiers & ModifierKeys.Shift) != ModifierKeys.Shift);
}
}
/// <summary>
/// Method to perform sorting on datagrid
/// </summary>
/// <param name="sortColumn"></param>
internal void PerformSort(DataGridColumn sortColumn)
{
Debug.Assert(sortColumn != null, "column should not be null");
if (!CanUserSortColumns || !sortColumn.CanUserSort)
{
return;
}
if (CommitAnyEdit())
{
PrepareForSort(sortColumn);
DataGridSortingEventArgs eventArgs = new DataGridSortingEventArgs(sortColumn);
OnSorting(eventArgs);
if (Items.NeedsRefresh)
{
try
{
Items.Refresh();
}
catch (InvalidOperationException invalidOperationException)
{
Items.SortDescriptions.Clear();
throw new InvalidOperationException(SR.Get(SRID.DataGrid_ProbableInvalidSortDescription), invalidOperationException);
}
}
}
}
但我不能使用的。 有關我該怎麼做的任何想法?