Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > WPF и Silverlight > Редактирование объекта в форме


Автор: V0fka 1.10.2013, 09:30
Привет!

Есть 2 формы. Одна форма содержит ListВox, прибинденный к ObservableCollection. По двойному клику открывается другая форма, в которую передается объект, который можно там редактировать:

Код

TaskWindow tw = new TaskWindow((Task)listBox_Tasks.SelectedItem);
tw.ShowDialog();


Вот код окна TaskWindow (текущий код - это один из вариантов экспериментов):

Код

    public partial class TaskWindow : Window
    {
        public TaskWindow()
        {
            InitializeComponent();
        }

        public Task mTask { get; set; }
        private Task currentTask;

        public TaskWindow(Task task)
            : this()
        {
            this.currentTask = task;
            this.mTask = task.Clone();
        }

        private void btn_Ok_Click(object sender, RoutedEventArgs e)
        {
            currentTask.load(mTask);
            Close();
        }

        private void btn_Close_Click(object sender, RoutedEventArgs e)
        {
            Close();
        }
    }


Что я хочу сделать. Я хочу, чтобы по нажатию на btn_Ok объект сохранялся и обновлялся в listBox_Tasks, а по нажатию на btn_Close форма просто закрывалась и объект не сохранялся. Если сделать так, как я написал выше - то поведение вроде то, но в listBox_Tasks объект не обновляется. Если я его открываю снова - то в форме TaskWindow он в нужном состоянии, а вот в листбоксе не обновлен.

Вопрос: как это все сделать? И я, признаться, не уверен, что тот подход, который я использую для этой задачи - нормальный. Не, может оно конечно так и делается, но просто в силу своей неопытности вот прошу совета у более опытных коллег. smile

Автор: likegift 4.10.2013, 08:55
Я думаю, что просто в классе Task не хватает реализации интерфейса INotifyPropertyChanged с вытекающими из этого последствиями в виде необновляющихся свойств, которые вы изменяете.

Автор: V0fka 4.10.2013, 15:11
likegift, большое спасибо! Реализовал интерфейс INotifyPropertyChanged и получил то, что хотел.

Автор: likegift 7.10.2013, 07:26
Цитата(V0fka @ 4.10.2013,  18:11)
likegift, большое спасибо! Реализовал интерфейс INotifyPropertyChanged и получил то, что хотел.

кушайте на здоровье! smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)