c # Wpf Сетка данных - PullRequest
0 голосов
/ 07 мая 2018

Можно ли обновить строки и отобразить их снова, Я столкнулся с проблемой, потому что, если я сразу добавляю 3 элемента в таблицу, они отображают все в порядке, но когда я позже добавляю элемент в массив и отображается в сетке, следующий элемент не добавляется

public partial class MainWindow : Window
{
    public DateTime start;

    public DateTime end;

    public List<Action> zadania = new List<Action>();

    public MainWindow()
    {
        InitializeComponent();
        var urlop = new Action(); 
    }
     private void DatePicker_SelectedDateChanged(object sender,
        SelectionChangedEventArgs e)
    {
        // ... Get DatePicker reference.
        var picker = sender as DatePicker;

        // ... Get nullable DateTime from SelectedDate.
        DateTime? date = picker.SelectedDate;
        if (date == null)
        {
            // ... A null object.
            this.Title = "No date";
        }
        else
        {
            // ... No need to display the time.
            this.Title = date.Value.ToShortDateString();
            start = date.Value;
        }
    }

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        //add element to table
        zadania.Add(new Action(start, new DateTime(2008, 6, 1, 8, 30, 52), textbox.Text));
    }

    private void Button_Click_1(object sender, RoutedEventArgs e)
    {
        //show in datagridview  
        DataGrid.ItemsSource = zadania;
    }
}

Ответы [ 2 ]

0 голосов
/ 08 мая 2018

Это потому, что zadania является List<Action>, а List<T> не реализует интерфейс INotifyCollectionChanged .

В исходной коллекции должен быть реализован этот интерфейс, чтобы элементы автоматически добавлялись или удалялись из представления при вызове Add и Remove.

Существует только одна встроенная коллекция, которая реализует этот интерфейс, а именно класс ObservableCollection<T>.

Так что, если вы просто измените тип вашей исходной коллекции, все будет в порядке:

public ObservableCollection<Action> zadania = new ObservableCollection<Action>();
0 голосов
/ 07 мая 2018

Каждый раз, когда вы добавляете элемент, вы должны обновлять элементы таблицы данных.

private void Button_Click(object sender, RoutedEventArgs e)
{
    //add element to table
    zadania.Add(new Action(start, new DateTime(2008, 6, 1, 8, 30, 52), textbox.Text));
    DataGrid.Items.Refresh();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...