[英]MVVM LightToolkit and WPF Datagrid AutoGeneratingColumn event
[英]Why does the AutoGeneratingColumn event in a DataGrid repeat the columns?
當我在列表中搜索時,將結果傳遞給函數以加載DataGrid,每次觸發AutoGeneratingColumn事件時,它將再次重復同一列。 啟動應用程序時,事件將檢查該列一次,第一次搜索將檢查兩次,第二次則進行三次,依此類推。 我有下一個函數來加載DataGrid:
private void cargarListaAgenda(List<listaAgendaClass> lista)
{
Application.Current.Dispatcher.BeginInvoke(DispatcherPriority.Background, new Action(() =>
{
gridAgendaDataGridAgenda.AutoGeneratingColumn += (s, e) =>
{
e.Column.Visibility = Visibility.Hidden;
if (e.Column.Header.ToString() == "Nombre" || e.Column.Header.ToString() == "Alias" || e.Column.Header.ToString() == "Apellidos")
{
e.Column.Visibility = Visibility.Visible;
if (e.Column.Header.ToString() != "Apellidos")
e.Column.Width = new DataGridLength(gridAgendaDataGridAgenda.Width * 0.33);
else
e.Column.Width = new DataGridLength(1, DataGridLengthUnitType.Star);
}
};
gridAgendaDataGridAgenda.ItemsSource = null;
gridAgendaDataGridAgenda.ItemsSource = lista;
}));
}
似乎每次調用cargarListaAgenda
方法時都在附加一個新的事件處理程序。
嘗試在附加新事件處理程序之前將其刪除:
private void cargarListaAgenda(List<listaAgendaClass> lista)
{
Application.Current.Dispatcher.BeginInvoke(DispatcherPriority.Background, new Action(() =>
{
gridAgendaDataGridAgenda.AutoGeneratingColumn -= GridAgendaDataGridAgenda_AutoGeneratingColumn;
gridAgendaDataGridAgenda.AutoGeneratingColumn += GridAgendaDataGridAgenda_AutoGeneratingColumn;
gridAgendaDataGridAgenda.ItemsSource = lista;
}));
}
private void GridAgendaDataGridAgenda_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
e.Column.Visibility = Visibility.Hidden;
if (e.Column.Header.ToString() == "Nombre" || e.Column.Header.ToString() == "Alias" || e.Column.Header.ToString() == "Apellidos")
{
e.Column.Visibility = Visibility.Visible;
if (e.Column.Header.ToString() != "Apellidos")
e.Column.Width = new DataGridLength(gridAgendaDataGridAgenda.Width * 0.33);
else
e.Column.Width = new DataGridLength(1, DataGridLengthUnitType.Star);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.