Necesitamos tu ayuda para difundir nuestros enunciados referente a las ciencias de la computación.
Solución:
en su cuadrícula de datos, suscríbase a la AutoGeneratingColumn
evento, el evento args
(DataGridAutoGeneratingColumnEventArgs
) tiene el nombre de la columna y un “Cancel
“, si el nombre de la columna es ID, establezca Cancel = true
. debería hacer el truco.
Puede usar un comportamiento (código reutilizable) para hacer el trabajo… De esta manera puede usar attribute lo que centralizaría la visibilidad de la columna en un solo lugar.
Uso:
…
public class YourObjectItem
{
[Browsable(false)]
public Assembly Assembly get; set;
Código:
using System;
using System.ComponentModel;
using System.Windows;
using System.Windows.Controls;
namespace HQ.Wpf.Util.Behaviors
///
/// Using this behavior on a dataGRid will ensure to display only columns with "Browsable Attributes"
///
public static class DataGridBehavior
public static readonly DependencyProperty UseBrowsableAttributeOnColumnProperty =
DependencyProperty.RegisterAttached("UseBrowsableAttributeOnColumn",
typeof(bool),
typeof(DataGridBehavior),
new UIPropertyMetadata(false, UseBrowsableAttributeOnColumnChanged));
public static bool GetUseBrowsableAttributeOnColumn(DependencyObject obj)
return (bool)obj.GetValue(UseBrowsableAttributeOnColumnProperty);
public static void SetUseBrowsableAttributeOnColumn(DependencyObject obj, bool val)
obj.SetValue(UseBrowsableAttributeOnColumnProperty, val);
private static void UseBrowsableAttributeOnColumnChanged(DependencyObject obj, DependencyPropertyChangedEventArgs e)
var dataGrid = obj as DataGrid;
if (dataGrid != null)
if ((bool)e.NewValue)
dataGrid.AutoGeneratingColumn += DataGridOnAutoGeneratingColumn;
else
dataGrid.AutoGeneratingColumn -= DataGridOnAutoGeneratingColumn;
private static void DataGridOnAutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
var propDesc = e.PropertyDescriptor as PropertyDescriptor;
if (propDesc != null)
foreach (Attribute att in propDesc.Attributes)
var browsableAttribute = att as BrowsableAttribute;
if (browsableAttribute != null)
if (!browsableAttribute.Browsable)
e.Cancel = true;
// As proposed by "dba" stackoverflow user on webpage:
// https://stackoverflow.com/questions/4000132/is-there-a-way-to-hide-a-specific-column-in-a-datagrid-when-autogeneratecolumns
// I added few next lines:
var displayName = att as DisplayNameAttribute;
if (displayName != null)
e.Column.Header = displayName.DisplayName;
Otra posibilidad seria Visibility.Collapsed
:
private void dataGrid_AutoGeneratingColumn(object sender,
DataGridAutoGeneratingColumnEventArgs e)
//Set properties on the columns during auto-generation
switch (e.Column.Header.ToString())
case "rownameYouWantToHide":
e.Column.Visibility = Visibility.Collapsed;
break;
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)