WPF tab-control с одинаковыми элементами управления для всех вкладок - PullRequest
0 голосов
/ 08 сентября 2010

Как создать n-количество вкладок с элементами управления данными в wpf?

Скажем, в основном приложении есть кнопка «Новый клиент» и «Сохранить данные».При нажатии «новый клиент» появляется новая вкладка с двумя текстовыми полями «Имя» и «Номер клиента», содержащиеся на вкладке, и так далее.Как только два поля заполнены, нажатие «сохранить данные» должно сохранить информацию из выделенной вкладки в базе данных.

Проблема, с которой я столкнулся, заключается в том, что у меня есть статическое имя для «Имя» и «Клиент».Число "текстовые поля как x: Name =" CustomerName "и x: Name =" CustomerNumber ".Я обнаружил, что вы не можете дублировать их.

Может кто-нибудь посоветовать, как мне решить эту проблему?Заранее спасибо!

1 Ответ

0 голосов
/ 08 сентября 2010

Использование MVVM:

Иметь представление и модель представления для нового клиента с кнопкой сохранения в представлении, которая выполняет код для сохранения клиента в базе данных.Этот код должен находиться в модели Customer или Customer Service.

NewCustomerView не нужно иметь имена, связанные с его элементами управления, поскольку вы будете привязывать их свойства Text к свойствам ViewModel или базовой модели, если толькоВы должны ссылаться на них для какой-то другой цели, кроме получения данных от каждого из них.

В главной форме у вас будет элемент управления Tab с источником элемента, установленным в ObservableCollection на MainWindowViewModel.Нажатие кнопки «Новый клиент» приведет к заполнению новой записи в этой коллекции ObservableCollection.

В MainWindowView вы должны поместить шаблон данных, который сопоставляет NewCustomerViewModel с NewCustomerView, например:

  <DataTemplate DataType="{x:Type vm:NewCustomerViewModel}">
    <AdornerDecorator>
       <views:NewCustomerView DataContext="{Binding}"/>
    </AdornerDecorator>
  </DataTemplate>

Это в основном говорит, что когда контент представляет собой NewCustomerViewModel, визуализируйте NewCustomerView.

Вы должны пойти и прочесть о MVVM, так как это решит вашу проблему с именами, а также лучшее приложение с архитектурой.

См. Статью Джоша Смита о MVVM, там также есть много другой информации для чтения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...