powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Проблемы с иерархическими моделями представлений
21 сообщений из 96, страница 4 из 4
Проблемы с иерархическими моделями представлений
    #38634623
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Алексей КИз-за этого тебе приходится описывать объёмную структуру данных в нескольких местах и заниматься бесполезным делегированием. А всё ради размещения логики в сеттерах свойств. Оно того не стоит. Ищи альтернативный способ размещения логики.
Ну почему только в свойствах. Сейчас у меня это в командах.Тогда мы ходим по кругу .

user7320Я заметил, что не использую Children_CollectionChanged в своей ObservableCollection Children. Попробую логику изменения модели поместить туда. Т. е. в команде будет меняться вью модель дерева - потомок добавляться в Children, а в событии CollectionChanged будет обновляться модель...Ну удачи... :-)
...
Рейтинг: 0 / 0
Проблемы с иерархическими моделями представлений
    #38634767
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как считаете, нормально?

Код: c#
1.
2.
3.
4.
5.
6.
        /// <summary>
        /// Hamlet's function.
        /// </summary>
        private bool ToForgiveOrNotToForgive(HttpContextBase context)
        {
            ...



Определяет, стоит ли пустить пользователя дальше с неверными куками, или пока повременить.
...
Рейтинг: 0 / 0
Проблемы с иерархическими моделями представлений
    #38634794
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
private убери. Там по дефолту private.
...
Рейтинг: 0 / 0
Проблемы с иерархическими моделями представлений
    #38634809
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К,

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

Кстати, там говорили, что де куки могут "испортиться", потеряться и пр. форс-мажор, поэтому де на куках такое основывать это не по-взрослому. Ну чего-то я не видел, чтобы на форумах или ещё где куки терялись - например, тут я без вылогинивания месяцами сижу. Короче, куки достаточно надёжная вещь. В крайнем случае юзер раз в месяц лишний раз перелогинится. У меня вообще сессия убивается через двое суток (по дефолту в MembershipProvider).

Вобщем, я попробовал поработать с двух брузеров - мои сценарии отрабатываются как я и задумал. Чего может быть не так? Какие подводные камни?
...
Рейтинг: 0 / 0
Проблемы с иерархическими моделями представлений
    #38634812
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Кprivate убери. Там по дефолту private.
Я привык ставить явно. И скобочки на однострочные if/else. Я постоянно всё забываю - все эти дефолтные соглашения (вот, недавно забыл, в чём разница между return ++i и return i++), поэтому мне удобнее, когда явно.
...
Рейтинг: 0 / 0
Проблемы с иерархическими моделями представлений
    #38634820
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Алексей К,

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

Кстати, там говорили, что де куки могут "испортиться", потеряться и пр. форс-мажор, поэтому де на куках такое основывать это не по-взрослому. Ну чего-то я не видел, чтобы на форумах или ещё где куки терялись - например, тут я без вылогинивания месяцами сижу. Короче, куки достаточно надёжная вещь. В крайнем случае юзер раз в месяц лишний раз перелогинится. У меня вообще сессия убивается через двое суток (по дефолту в MembershipProvider).

Вобщем, я попробовал поработать с двух брузеров - мои сценарии отрабатываются как я и задумал. Чего может быть не так? Какие подводные камни?
Тока чёта мой фильтр разросся до 200 строк кода. Правда, там половина - комменты с описанием алгоритма и четверть - скобочки и сообщения для логов. Реально за одно обращение к фильтру строк 20 выполняется.
...
Рейтинг: 0 / 0
Проблемы с иерархическими моделями представлений
    #38634821
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И в Профайле 5 переменных для работы этого всего.
Зато ни у кого такого нет! )))
...
Рейтинг: 0 / 0
Проблемы с иерархическими моделями представлений
    #38634826
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Зато ни у кого такого нет! )))Верю. :-)

зы: я с Asp.Net мало знаком чтобы что-то советовать.
...
Рейтинг: 0 / 0
Проблемы с иерархическими моделями представлений
    #38634830
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Кuser7320Зато ни у кого такого нет! )))Верю. :-)

зы: я с Asp.Net мало знаком чтобы что-то советовать.
MVC же.
...
Рейтинг: 0 / 0
Проблемы с иерархическими моделями представлений
    #38635005
WebSharper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Я так и делаю.


Я имел ввиду копирование только элементов модели а не ViewModel

Всё дело в Clone(). Ваши предложения по его реализации? Лично я в сериализацию - т. к. она почти наверняка понадобится и для других целей. До этого делал просто метод, копировавший все нужные поля и вызывавший рекурсивно подобные же методы из составляющих моделей.

Зависит от разных вещей . Если нет вложенности, то MemberwiseClone
...
Рейтинг: 0 / 0
Проблемы с иерархическими моделями представлений
    #38635029
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WebSharperuser7320Я так и делаю.


Я имел ввиду копирование только элементов модели а не ViewModel
Прошу прощения, я так и делаю на самом деле. Мой пример несколько отвлечённый. Вот мой реальный код:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
#region AddQuestCommand

[NonSerialized]
private DelegateCommand<NodedQuest_VM> _addQuestCommand;

public ICommand AddQuestCommand
{
    get
    {
        if (_addQuestCommand == null)
        {
            _addQuestCommand = new DelegateCommand<NodedQuest_VM>(this.AddQuest);
        }
        return _addQuestCommand;
    }
}

private void AddQuest(NodedQuest_VM parameter)
{
    if (parameter == null)
        parameter = Game.MainQuest;

    // Refresh the UI.
    parameter.Children.Add(new NodedQuest_VM(CurrentQuest.GetModel<Quest>().DeepClone()));

    // Add current quest to the Children collection of the selected quest.
    parameter.GetModel<Quest>().Children.Add(CurrentQuest.GetModel<Quest>().DeepClone());
}

#endregion AddQuestCommand



Здесь я 2 раза копирую только модель. Однако, вью модель всё равно подменяю новым экземпляром вью модели (со старой моделью, которую копирую) - см. строчку под комментарием "Refresh the UI.". Это я делаю потому, что если просто добавлять старую вью модель в дерево справа (см. скрин на предыдущей странице), то я просто создам кучу представлений в дереве и в редакторе слева, ссылающихся на одну вью модель. Т. е. если в редакторе изменю, например, имя, то оно поменяется во всех представлениях в дереве, отображающих эту вью модель. Мне же этого не надо. Поэтому вью модель в дереве (или в редаторе - где удобнее) надо подменить.

WebSharper
Зависит от разных вещей . Если нет вложенности, то MemberwiseClone
Вложенности есть, и немало.

Я эту тему тоже изучал. Пришёл к выводу, что либо делать на каждый класс свой метод копирования (который будет вызывать подобные же методы для всех сложных объектов-полей этого класса), либо сериализация. Причём сериализация от первого метода принципиально не отличается - всё равно придётся рыскать руками по классам и помечать, что сериализовать, а что нет. С сериализацией больше хлопот - кроме того, что нужно пометить, что сериализовать, надо пометить, что сериализовать НЕ НАДО. Плюс сериализуемый класс должен иметь конструктор по умолчанию и некоторые другие требования. В своём методе этого ничего не надо - просто копируешь те поля, что нужны. Зато после расстановки атрибутов сериализации получаешь готовую сериализацию в любой формат - в Дотнете есть кучка готовых сериализаторов.

Есть ещё всякие извилистые подходы. Я, например, вот этот код не понял. Начал разбираться, запутался и забил. Пусть у него "в 3 раза быстрее", но с сериализацией мне зато понятнее.
...
Рейтинг: 0 / 0
Проблемы с иерархическими моделями представлений
    #38635030
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CurrentQuest - это как раз то, что отображается на скрине слева в виде редактора полей квеста.
...
Рейтинг: 0 / 0
Проблемы с иерархическими моделями представлений
    #38635225
WebSharper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320 Здесь я 2 раза копирую только модель.

Зачем ее копировать два раза. Почему нельзя вторую VM создать ссылающуюся на ту же M?

Как происходит изначальная инициализация VM для дерева. По идее должен быть какой-то код, который отображает М в VM почему она не может подписаться на события модели и автоматически создать VM для айтема при добавлении его в модель?
...
Рейтинг: 0 / 0
Проблемы с иерархическими моделями представлений
    #38635259
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WebSharperuser7320 Здесь я 2 раза копирую только модель.

Зачем ее копировать два раза. Почему нельзя вторую VM создать ссылающуюся на ту же M?

Как происходит изначальная инициализация VM для дерева. По идее должен быть какой-то код, который отображает М в VM почему она не может подписаться на события модели и автоматически создать VM для айтема при добавлении его в модель?
Да, действительно... Что-то я не подумал.

Но всё равно, остаётся ДВЕ операции над моделью. А я хочу, чтобы была одна - добавил в ObservableCollection новую вью модель, и чтобы в модели тоже всё добавилось. Т. е. один раз изменил, и все другие изменения, зависящие от этого, автоматом применились. Попробую такое сделать с подпиской на событие CollectionChanged для ObservableCollection.
...
Рейтинг: 0 / 0
Проблемы с иерархическими моделями представлений
    #38635298
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WebSharperПо идее должен быть какой-то код, который отображает М в VM почему она не может подписаться на события модели и автоматически создать VM для айтема при добавлении его в модель?
Я думаю сделать наоборот - сначала меняется вью модель, а потом она меняет свою модель. У меня так для свойств простых сделано, которые просто "пробрасывают" свойства модели во вью. А для коллеции я что-то ступил и забыл сделать.
...
Рейтинг: 0 / 0
Проблемы с иерархическими моделями представлений
    #38635324
WebSharper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Я думаю сделать наоборот - сначала меняется вью модель, а потом она меняет свою модель.

Получается, то тот, кто меняет модель, должен знать что существует конкретный вид view для нее и если потребуется сделать какое-то другое изменение для модели (например появится метод который добавляет n айтемов сразу) ту надо будет туда добавлять код для всех вью, которые его отображают.
...
Рейтинг: 0 / 0
Проблемы с иерархическими моделями представлений
    #38635473
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WebSharperuser7320Я думаю сделать наоборот - сначала меняется вью модель, а потом она меняет свою модель.

Получается, то тот, кто меняет модель, должен знать что существует конкретный вид view для нее и если потребуется сделать какое-то другое изменение для модели (например появится метод который добавляет n айтемов сразу) ту надо будет туда добавлять код для всех вью, которые его отображают.
Да, вы правы. Тогда наоборот.
...
Рейтинг: 0 / 0
Проблемы с иерархическими моделями представлений
    #38637127
mvvm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Алексей КВся эта prism-байда отталкивается от неверного утверждения, мол приложения на "голом" WPF плохо разделяются на модули и вообще так себе:

Эта байда изначально заточена на модульность и слабую связанность.
А вот твой подход, где все завязано на левых и самопальных контролах, кототые реализуют куцый интерфейс с частными случаями, полностью противоречит концепции WPF, где есть все возможности отделить интерфейс от логики.
...
Рейтинг: 0 / 0
Проблемы с иерархическими моделями представлений
    #38640038
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я вот не понял, чего МСУ так против иерархических VM и V? У меня вот такой интерфейс, как на картинке. Каждый красный прямоугольник - VM и соответствующая ему V. Самая главная вью модель - окно. Внутри контент презентеры, которые либо сразу внутри себя разметку имеют, либо через дата темплиты ссылаются на другие представления. Эти другие представления, в свою очередь, у меня выглядят как юзер контролы с разметкой. Ну и последовательный байндинг от главного окна до самого вложенного красного прямоугольника. Кнопочка с вопросиком - описание параметра. Описание хранится в модели в виде атрибута, а во вью модели вытаскивается в свойство, которое и привязывается.
...
Рейтинг: 0 / 0
Проблемы с иерархическими моделями представлений
    #38640042
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чёт, похоже, в этом разделе один я толкусь. Остальные все на джаваскрипт ушли?
...
Рейтинг: 0 / 0
Проблемы с иерархическими моделями представлений
    #38640093
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Я вот не понял, чего МСУ так против иерархических VM и V?Забей. Работает и ладно.
...
Рейтинг: 0 / 0
21 сообщений из 96, страница 4 из 4
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Проблемы с иерархическими моделями представлений
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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