tutorial que español ejemplos column wpf datagrid

wpf - que - Agregar un botón a un WGD DataGrid



wpf tutorial español (2)

Mira esto:

XAML:

<DataGrid Name="DataGrid1"> <DataGrid.Columns> <DataGridTemplateColumn> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <Button Click="ChangeText">Show/Hide</Button> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> </DataGrid.Columns> </DataGrid>

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<DemoModel> models = new ObservableCollection<DemoModel>(); 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;

Quiero crear un control DataGrid en WPF en el que haya un botón en la primera celda de cada fila. Al hacer clic en este botón, se mostrará RowDetailsTemplate o SubRow. Mi preocupación es ¿Cómo agrego un botón que mostrará / RowDetailsTemplate ?

cualquier ayuda será apreciada

Gracias


Primero crea un DataGridTemplateColumn para contener el botón:

<DataGridTemplateColumn> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <Button Click="ShowHideDetails">Details</Button> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn>

Cuando se hace clic en el botón, actualice la DataGridRow de DataGridRow contiene:

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; } }