powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Как организовать в Silverlight модуль данных a la Delphi?
9 сообщений из 9, страница 1 из 1
Как организовать в Silverlight модуль данных a la Delphi?
    #37512662
dayone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток всем.
Пересаживаюсь на Silverlight+RIA с Delphi (VisualStudio 2010, C#, Silverlight 4), и работаю с данными с MSSQL.
Хочу создать приложение по наработанной схеме - несколько экранных форм с контролами, и единое сводное место для всех DataSource'ов (ну или хотя бы общих справочников), ну как TDataModule в Delphi. И не могу понять, как это сделать грамотно.
Пытался сделать отдельный XAML-файл как ResourceDictionary с DomainDataSource'ами, подцепляю его к Application.Resources через ResourceDictionary.MergedDictionaries, и даже из кода с этими датасетами работаю. Вот только дизайнер форм начинает клинить. Наверное, в ResourceDictionary нельзя класть DomainDataSource'ы.
Поделитесь, пожалуйста, опытом, если кто делал общее хранилище источников данных - как это сделать правильно?

И чтобы два раза не вставать - нет ли у кого примера как сделать (или взять фриварно) контрол типа TDBNavigator? Уж очень полезная для UI штука.
...
Рейтинг: 0 / 0
Как организовать в Silverlight модуль данных a la Delphi?
    #37512676
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dayone Поделитесь, пожалуйста, опытом, если кто делал общее хранилище источников данных - как это сделать правильно?

Правильно - это не делать общее хранилище и не тащить старые подходы.
С DomainDataSource'ами не работал(тоже диверсия, которая не позволяет отвязаться от экранных форм), попробуй Blend. В нем можно указывать ресурсы, которые нужно присоединить для редактирования формы
...
Рейтинг: 0 / 0
Как организовать в Silverlight модуль данных a la Delphi?
    #37512815
Фотография Asm64D
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TDataModule - ах... воспоминания...

По сабжу сочувствую, но вам нужно понять что здесь (C#) не все так просто, менталитет программирования (аля парадигмы) другие, прочтите несколько книг и вы или полюбите парадигму C# или люто возненавидите...
...
Рейтинг: 0 / 0
Как организовать в Silverlight модуль данных a la Delphi?
    #37513847
dayone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ОК. Посмотрел, что делает Бленд, буду осмысливать - пока нет ощущения, что _этот_ путь дает свободу от экранных форм.

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

Плз, не пинайте ногами за вопросы, бо практически варюсь в собственном соку в одиночку, а попавшиеся книги предлагают писать какие-то одноэкранные пукалки, оттачивающие частные моменты. А вот методологии, как толком связать в целое несколько разрозненных кусков, пока не увидел (сильверлайтовский шаблон с навигационными фреймами по сути тоже дает разрозненные куски). Может, кто ссылкой на изложение таких подходов поделится?
...
Рейтинг: 0 / 0
Как организовать в Silverlight модуль данных a la Delphi?
    #37514033
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dayone... чтобы он был доступен отовсюду?
Статическое свойство +
Код: plaintext
<ComboBox ItemsSource="{x:Static my:МоиКлассификаторы.МойКлассификатор}"/>
...
Рейтинг: 0 / 0
Как организовать в Silverlight модуль данных a la Delphi?
    #37514125
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Static не для этих целей. Можно сделать свои провайдеры
Код: plaintext
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.
31.
32.
33.
34.
35.
36.
37.
38.
   public sealed class ClassifierProvider : MarkupExtension
    {
        public string Classifier { get; set; }
        private Dictionary<string, object> cash = new Dictionary<string, object>();

        public override object ProvideValue( IServiceProvider serviceProvider )
        {
            if (IsInDesingMode() || String.IsNullOrWhiteSpace(Classifier))
                return null;

            object value = null;
            if (this.cash.TryGetValue(Classifier, out value))
            {
                return value;
            }
            else
            {
                var list = new ObservableEntity<ClassifierInfoList>( );
               //Здесь должна быть твоя логика для получения данных
                this.SetCash( Classifier, list );
                var load = list.FetchAndSubscribe();
                value = list;
            }

            return value;
        }

        private void SetCash(string key, object value)
        {
            this.cash.Add(key, value);
        }

        private static bool IsInDesingMode()
        {
            return System.ComponentModel.DesignerProperties.IsInDesignTool;
        }
    }
}
Вариант использования в xaml
Код: plaintext
1.
2.
3.
4.
	<local:ClassifierProvider x:Key="UOM"
                Classifier="Единицы измерения" />

             	  ItemsSource="{Binding Source={StaticResource UOM}

Строго типизированный вариант
Код: plaintext
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.
  public sealed class ViewModelProvider : MarkupExtension
    {
        public //Type 
            string Type { get; set; }

        public override object ProvideValue( IServiceProvider serviceProvider )
        {
            if (IsInDesingMode())
                return null;

            if (this.Type != null)
            {
                var xamlTypeResolver = serviceProvider.GetService( typeof( IXamlTypeResolver ) ) as IXamlTypeResolver;
                Type type = xamlTypeResolver.Resolve( this.Type );
              
                var entityType = typeof( ObservableEntity<> ).MakeGenericType( type );
                var entity =(dynamic)Activator.CreateInstance( entityType );
                if(entity == null) return null;

                entity.FetchAndSubscribe();
                return (object)entity;
            }
            return null;
        }

Для работы в асинхронном режиме рекомендую Rx, c ним не нужны callback'и
...
Рейтинг: 0 / 0
Как организовать в Silverlight модуль данных a la Delphi?
    #37514155
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaStatic не для этих целей.А для каких?
...
Рейтинг: 0 / 0
Как организовать в Silverlight модуль данных a la Delphi?
    #37514785
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для тех же, что и в wpf - статические свойства/значения
...
Рейтинг: 0 / 0
Как организовать в Silverlight модуль данных a la Delphi?
    #37515994
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dayone... чтобы он был доступен отовсюду?
SeVaДля тех же, что и в wpf - статические свойства/значения
Не?
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Как организовать в Silverlight модуль данных a la Delphi?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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