powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Подход к WPF MVVM
5 сообщений из 5, страница 1 из 1
Подход к WPF MVVM
    #38730731
Алексей Ку.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, знатоки!
Я не первый и не я последний с такой темой.Изучаю WPF+MVVM.
Накатал такой пример (см. вложение).
Суть проста: одно окошко, создаются LinqToSqlClases и таблица выводится на грид.

Вопрос:
1) У меня правильный подход? Что я напутал?

2) Как сделать заполнение коллекции Headers по команде?
Сейчас он заполняется при создании
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
        public Headers(SqlConnection con)
        {
            _sqlcon = con;
            if(_sqlcon.State != ConnectionState.Open)
                _sqlcon.Open();
            DCNomeklature dc = new DCNomeklature(con);
            System.Data.Linq.Table<t_DebWorksHeader> tmp = dc.t_DebWorksHeaders;
            _headers = new ObservableCollection<t_DebWorksHeader>(tmp);
        }



Если делать по команде, то где должно быть открытие подключение и заполнение коллекции: в Model или ModelView?
Я так понял что в Model не должно быть никаких действий, так? А если делать в ModelView, то мне надо:
Открыть в Model set"ы для коллекции в ModelView создать DCNomenklature, который потом присвоить полю Model`a?

3) Я завёл статический класс Terminal.cs. В нём я хочу хранить такие вещи как строка подключения, текущий номер выбранного Header`a и т.д. Вообщем относительно глобальные значения. С этим классом по идее будут работать все ModelView. Но что-то мне подсказывает что подход неверный... Как правильно это сделать?

4) Какой профит даёт ObservableCollection? Я не нашёл примеров использования его свойств.

5) Можете подсказать как сделать установку SelectedHeader при помощи команды?
...
Рейтинг: 0 / 0
Подход к WPF MVVM
    #38730744
Алексей Ку.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ещё такой вопрос. Допустим я хочу теперь сделать ещё одну модель - детали.
У меня будет выбор из DCNomeklature.t_DebWorksDetails, где id=...
Как правильно мне передать этот ID из одной модели в другую?
...
Рейтинг: 0 / 0
Подход к WPF MVVM
    #38730777
капитанская дочка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Ку.,

кури EF - Entity Framework
...
Рейтинг: 0 / 0
Подход к WPF MVVM
    #38730812
monstrilla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Алексей Ку.,
авторКакой профит даёт ObservableCollection

ну так то уведомляет WPF о том, что об изменениях в составе, например, элемент добавлен или удален.

Логика должна быть во ViewModel, там же определение команды. В методе, который вызывается по команде - логика (вообще любая требуемая). В разметке View (хотя можно и в кодбехайнде) прицепишь команду к клику кнопки, например, или к событию Loaded твоего грида. В зависимости от того, что нужно.

гугли RelayCommand и будет счастье
...
Рейтинг: 0 / 0
Подход к WPF MVVM
    #38736078
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Ку.,

2) в Model нужно реализовать работу с данными (чтение, сохранение, изменение)
3) Для хранения параметров есть класс Settings и Resources в пространстве имён Properties, думаю он вполне себе удобен
4) ObservableCollection<T> реализовано OnPropertyChanged для (вставки, удаления, перемещения элементов), грубо говоря, когда элемент добавляется коллекции View оповещается о том, что список обновился и его нужно пересоздать на экране. Если вы создадите класс List<T> и забиндите на него ListView, а потом добавить в ViewModel в него элемент, то на экране он не появится, а вот с ObservableCollection всё иначе.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Подход к WPF MVVM
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]