2012-04-27 3 views
4

У меня возникли проблемы с обновлением компонентов элементов поверхности. Я не знаю, ошибочен ли мой подход к проблеме, так как я новичок в этой теме.Обновление элемента управления от другого дочернего элемента управления

Моя точка представлена ​​на следующей диаграмме

enter image description here

согласно варианту, который выбран в меню, загружать различные пользовательские элементы управления, как только дитя StackPanel но я habing проблемы для обновления в ListView из загруженных пользовательских элементов управления, например: при сохранении нового элемента Мне нужно, чтобы перезарядить список элементов в ListView

ответ

1

MVVM будет хорошим образцом здесь. Если у вас есть проблема с передачей данных между элементами управления - почему бы не ввести их поверх единого уровня данных? Рассмотрим это:

Три переключателя в вашем меню, каждый IsChecked Недвижимость, связанная с Visibility Недвижимость вашего UserControl.

StackPanel держит все три UserControls

ListView связан с ViewModel-х List<Item>

Каждый из ваших UserControls связанного с ListView.SelectedItem: один из них с помощью TextBlock только для чтения, один с помощью TextBox для редактирования. Третий будет создавать новый элемент в вашем List<Item>. Вам нужно было бы создать ItemTemplate для каждого или создать один UserControl (так как они выглядят очень похожими) и используйте DataTemplateSelector.

Если вы не знакомы с MVVM here, это хорошее начало. Вы также можете использовать одну из существующих фреймворков, например MVVM Light

+0

Для простого проекта лучше всего использовать шаблон напрямую или использовать фреймворк? Я не хочу устанавливать ненужные вещи и создавать свой проектный комплекс. – rkmax

+0

Я бы сказал, начинайте свое дело, познакомьтесь с ключевыми вещами (DataContext, привязка, командование и т. Д.), Но на определенном этапе вы обнаружите, что предварительно созданная структура будет сэкономить много времени. – StaWho

+0

Вы правы. Я установил MVVM Light. Но, конечно, документация не очень хорошая; Учебник, подобный этому, http://www.galasoft.ch/mvvm/creating/ оставляет желать лучшего – rkmax

0

Вы можете создать событие на вашего ребенка

public delegate void HandleNAMEOFYOURHANDLEEVENT(); 

на своем дочернем классе

public event HandleNAMEOFYOURHANDLEEVENT yourInstance; 

использовать его на своем дочернем классе

if (!ReferenceEquals(yourInstance, null)) 
         { 
          yourInstance(); 
         } 

и вы объявляете его родителя, как и другие события.

Смежные вопросы