WPF DataGrid edytowalne komórki

0

Witam Wszystkich!
W swojej aplikacji wczytuję dane z pliku tekstowego do DataGrid. Po wczytaniu danych, kiedy chciałbym edytować dowolną komórkę program wiesza się i wyrzuca błąd: "Element EditItem jest niedozwolony dla tego widoku. W DataGrid własność IsReadOnly mam ustawioną na False. Czyli teoretycznie powinno dać się edytować komórki. Jednak coś jeszcze jest nie tak. ;/
Przeglądałem kilka forów, przykładów użycia DataGrid, ale wszystkie z nich opisują edycję danych przy połączeniu z bazą danych, a nie przy pobieraniu ich z pliku.
Z góry dziękuję za pomoc i zainteresowanie tematem.
Pozdrawiam,
Michał

0

pokaz kod. Nikt nie jest wrozbita.

0
 
int minCol = (ConstructionType.Min_width / 100);
            int minRow = (ConstructionType.Min_height / 100);
            int col = (ConstructionType.Max_width / 100);
            int row = (ConstructionType.Max_height / 100);
            MessageBox.Show(col.ToString() + "\n" + row.ToString());
            DataGridTextColumn emptyColumn = new DataGridTextColumn();
            emptyColumn.Header = "X";
            emptyColumn.Binding = new Binding("Height");
            dgTable.Columns.Add(emptyColumn);
            
            for (int i = minCol; i <= col; i++)
            {
                DataGridTextColumn column = new DataGridTextColumn();
                column.Header = (i * 100).ToString();
                dgTable.Columns.Add(column);
            }
            for (int j = minRow; j <= row; j++)
            {
                dgTable.Items.Add(new TablePrice() { 
                    Height = (j * 100),
                });
            }

Kod generowania tabeli. Chodzi o wymiary (ilość kolumn i wierszy). Przy probie wpisania jakiejkolwiek wartości wyrzuca wspomniany błąd. W następnym kroku miałoby to być zapisywane do pliku no i oczywiście z niego odczytywane w razie potrzeby.

0

Temat można uznać za zamknięty.
Utworzyłem klasę, w której definiuję dane, podpinam całość pod DataGrid i wszystko działa jak należy.
Pozdrawiam,

0

oczywiscie musimy zgadywac co sie dzieje...

tu masz xaml

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:wpfApplication1="clr-namespace:WpfApplication1"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525" d:DataContext="{d:DesignInstance wpfApplication1:MainWindow }">
    <Grid Name="MainGrid"/>
</Window>
 

tu masz .cs

using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;

namespace WpfApplication1
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public class DataItem
        {
            public string Column1 { get; set; }
            public string Column2 { get; set; }
            public string Column3 { get; set; }
            public string Column4 { get; set; }
        }
        public MainWindow()
        {
            InitializeComponent();
            Foo();
        }

        private void Foo()
        {
            var dg = new DataGrid();
            this.MainGrid.Children.Add(dg);

            for (int i = 1; i <= 4; ++i)
            {
                var column = new DataGridTextColumn();
                column.Header = "Column" + i;
                column.Binding = new Binding("Column" + i);
                dg.Columns.Add(column);
            }

            dg.Items.Add(new DataItem { Column1 = "a.1", Column2 = "a.2", Column3 = "a.3", Column4 = "a.4" });
            dg.Items.Add(new DataItem { Column1 = "b.1", Column2 = "b.2", Column3 = "b.3", Column4 = "b.4" });
        }
    }
}
 

i dziala bez problemu

1 użytkowników online, w tym zalogowanych: 0, gości: 1