Saltar al contenido

Agregar un botón a un WPF DataGrid

Haz todo lo posible por comprender el código correctamente antes de usarlo a tu trabajo y si ttienes algo que aportar puedes dejarlo en la sección de comentarios.

Solución:

Primero crea un DataGridTemplateColumn para contener el botón:


   
     
       
     
   

Cuando se hace clic en el botón, actualice el contenido DataGridRow‘s DetailsVisibility:

void ShowHideDetails(object sender, RoutedEventArgs e)

    for (var vis = sender as Visual; vis != null; vis = VisualTreeHelper.GetParent(vis) as Visual)
    if (vis is DataGridRow)
    
        var row = (DataGridRow)vis;
        row.DetailsVisibility = 
        row.DetailsVisibility == Visibility.Visible ? Visibility.Collapsed : Visibility.Visible;
        break;
    

Mira esto:

XAML:


    
        
            
                
                    
                
            
        
    

Método:

private void ChangeText(object sender, RoutedEventArgs e)

    DemoModel model = (sender as Button).DataContext as DemoModel;
    model.DynamicText = (new Random().Next(0, 100).ToString());

Clase:

class DemoModel : INotifyPropertyChanged

    protected String _text;
    public String Text
    
        get  return _text; 
        set  _text = value; RaisePropertyChanged("Text"); 
    

    protected String _dynamicText;
    public String DynamicText
    
        get  return _dynamicText; 
        set  _dynamicText = value; RaisePropertyChanged("DynamicText"); 
    

    public event PropertyChangedEventHandler PropertyChanged;
    public void RaisePropertyChanged(String propertyName)
    
        PropertyChangedEventHandler temp = PropertyChanged;
        if (temp != null)
        
            temp(this, new PropertyChangedEventArgs(propertyName));
        
    

Código de inicialización:

ObservableCollection models = new ObservableCollection();
models.Add(new DemoModel()  Text = "Some Text #1." );
models.Add(new DemoModel()  Text = "Some Text #2." );
models.Add(new DemoModel()  Text = "Some Text #3." );
models.Add(new DemoModel()  Text = "Some Text #4." );
models.Add(new DemoModel()  Text = "Some Text #5." );
DataGrid1.ItemsSource = models;

Si haces scroll puedes encontrar las reseñas de otros creadores, tú todavía tienes la opción de insertar el tuyo si lo crees conveniente.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *