es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo vincular los datos de una matriz a un DataGrid y realizar una actualización de los datos.

Quiero vincular el arreglo a una DataGrid de 4 columnas y actualizar los datos. ¿Es esto posible?

Si no se puede lograr, ¿cómo debo modificarlo?

Para actualizaciones automáticas, parece que podemos vincular a una colección de objetos con valores editables definiendo una clase para el elemento. Pero no sé cómo hacerlo.

 public partial class MainWindow : Window
  {
    int X=18;   
    public MainWindow()
    {
      InitializeComponent();
      int[] arr = new int[] { 61, 61, 61, 61, 61, 20, 30, 40, 50, 100, 200, 300, 400, 500, 0, 0, 0, 0, 0, 18, 23, 65, 41, 22, 91, 64, 33, 18, 44, 63, 91, 26, 32, 61, 83, 91, 26, 32, 91, 91, 91, 91 };
      DataGrid dataGrid = new DataGrid();
      dataGrid.AutoGenerateColumns = false;
      dataGrid.ItemsSource = arr.ToList();
      for (int i = 1; i < 5; i++)
      {
        DataGridTemplateColumn column = new DataGridTemplateColumn();
        column.Header = "Value"+i;
        DataTemplate cellTemplate = new DataTemplate();
        FrameworkElementFactory textBlock = new FrameworkElementFactory(typeof(TextBlock));
        textBlock.SetBinding(TextBlock.TextProperty, new Binding("."));
        cellTemplate.VisualTree = textBlock;
        column.CellTemplate = cellTemplate;

        DataTemplate cellEditingTemplate = new DataTemplate();
        FrameworkElementFactory textBox = new FrameworkElementFactory(typeof(TextBox));
        textBox.SetBinding(TextBox.TextProperty, new Binding("."));
        cellEditingTemplate.VisualTree = textBox;
        column.CellEditingTemplate = cellEditingTemplate;

        dataGrid.Columns.Add(column);
      }
      canvas.Children.Add(dataGrid);
      Canvas.SetLeft(dataGrid, X);
    }
  }

El resultado:

enter image description here

Quiero un resultado así:

61, 61, 61, 61, 61,

20, 30, 40, 50, 100,

200, 300, 400, 500, 0,

0, 0, 0, 0, 18,

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para vincular un array a una DataGrid de 4 columnas y actualizar los datos, debes modificar el código de la siguiente manera:

    1. Crea una clase para el item. En este caso, el item es un array con 4 elementos.
    2. Utiliza una List<t> en lugar de un array para habilitar las actualizaciones automáticas.

    3. Define las columnas de la DataGrid para vincularlas a las propiedades de la clase del item.

    Aquí tienes un ejemplo de implementación que logra el resultado deseado:

    public partial class MainWindow : Window
    {
        int X = 18;
        public MainWindow()
        {
            InitializeComponent();
            var items = new List<item>
            {
                new Item(61, 61, 61, 61),
                new Item(20, 30, 40, 50),
                new Item(200, 300, 400, 500),
                new Item(0, 0, 0, 18),
            };
            DataGrid dataGrid = new DataGrid();
            dataGrid.AutoGenerateColumns = false;
            dataGrid.ItemsSource = items;
            for (int i = 1; i <= 4; i++)
            {
                DataGridTextColumn column = new DataGridTextColumn();
                column.Header = "Value" + i;
                column.Binding = new Binding($"Value{i}");
                dataGrid.Columns.Add(column);
            }
            canvas.Children.Add(dataGrid);
            Canvas.SetLeft(dataGrid, X);
        }
    
        private class Item
        {
            public int Value1 { get; set; }
            public int Value2 { get; set; }
            public int Value3 { get; set; }
            public int Value4 { get; set; }
    
            public Item(int v1, int v2, int v3, int v4)
            {
                Value1 = v1;
                Value2 = v2;
                Value3 = v3;
                Value4 = v4;
            }
        }
    }
    

    Esta implementación utiliza una List<item> donde cada item tiene cuatro propiedades (Value1 a Value4) que corresponden a las cuatro columnas de la DataGrid. Se utiliza DataGridTextColumn para vincular cada propiedad del item.

    El resultado:

    </item></t>”>Comments are closed.