DataGrid nadpisywanie danych

0

Witam serdeczne wszystkich.
Chcę napisać prosty program do zbierania danych po RS232 -jestem kompletnym samoukiem. Początek dodam, że zdecydowałem się z VS 2013 oraz projekt Wpf Application. Mam problem z wyświetlaniem danych w DataGrid, wyświetla się tylko jedna linia danych a kolejne wyniki nadpisują się. Serdecznie proszę o wskazanie mi drogi ;D.

Moja klasa

 public class Odczyt
    {
        public int LP { get; set; }
        public int Pomiar { get; set; }
        public string Uwagi { get; set; }
        public string Jednostka { get; set; }
        public string Data { get; set; }
        public string Godzina { get; set; }
     }
 

Generowanie losowych wyników

public partial class MainWindow : Window
    {



        public List<Odczyt> ListaPomiary { get; set; }


        public MainWindow()
        {
            InitializeComponent();

          
        }
        int lp;
        Random losowyPomiar = new Random();

        private void Pomiar()
        {

            ListaPomiary = null;

            ListaPomiary = new List<Odczyt>();

            Odczyt pomiar = new Odczyt();
            pomiar.LP = ++lp;
            pomiar.Pomiar = losowyPomiar.Next(20, 100);
            pomiar.Jednostka = "jednostka";
            pomiar.Uwagi = "uwaga";
            pomiar.Data = DateTime.Now.ToString("dd/MM/yyyy");
            pomiar.Godzina = DateTime.Now.ToString("HH:mm:ss");
     
            ListaPomiary.Add(pomiar); 
...

 

Uzupełnianie datagrida

private void Refresh()
       {
            dgLista.ItemsSource= ListaPomiary; 
       }
}
 

Binding

<Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="277*"/>
            <ColumnDefinition Width="86*"/>
            <ColumnDefinition Width="33*"/>
        </Grid.ColumnDefinitions>
        <DataGrid CanUserAddRows="False" Margin="10,108,10,290" Name="dgLista" Background="{x:Null}" Grid.ColumnSpan="3" AutoGenerateColumns="False" AllowDrop="True">
            <DataGrid.Columns>
                <DataGridTextColumn 
                    Header="Lp."
                    Width="30"
                    Binding="{Binding LP}"/>
                <DataGridTextColumn 
                    Header="Pomiar" 
                    Width="*" 
                    Binding="{Binding Pomiar}" />
                <DataGridTextColumn 
                    Header="Jednostka"
                    Width="*"
                    Binding="{Binding Jednostka}"
                    />
                <DataGridTextColumn 
                    Header="Status"
                    Width="*"
                    Binding="{Binding Uwagi}"
                    />
                <DataGridTextColumn 
                    Header="Data" 
                    Width="*" 
                    Binding="{Binding Data}" />
                
                <DataGridTextColumn 
                    Header="Czas" 
                    Width="*"
                    Binding="{Binding Godzina}" />
                
                
            </DataGrid.Columns>

        </DataGrid>
 
0

A ty ta metodę Pomiar to gdzie wywołujesz? Bo jeśli za każdym razem kiedy chcesz dodać nowy pomiar to metoda zawsze nadpisuję listę i dodaje nowy item do nowej listy, do tego to powinno się nazywać DodajPomiar
Powinieneś też zamienić List<Odczyt> na ObservableCollection<Odczyt>, wtedy nie będzie potrzebny żaden refresh

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