powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Взаимодействие UserControl в рамках приложения
25 сообщений из 99, страница 2 из 4
Взаимодействие UserControl в рамках приложения
    #39814885
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВМоисеев>Eld Hasp, вчера, 19:55 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1312511&msg=21887597][21887597]
>P.S. Мой совет Вам - тормозните чуток и изучите основы. Без этого будет очень трудно создавать WPF приложения.
<А это мой Вам совет - смотрите в корень задачи и не увлекайтесь подгонкой под модное. Лишнее надо нещадно удалять.
Не зная в целом что Вы реализуете, сделал очень простой пример для иллюстрации.

Для WPF практически всегда нужны реализации интерфейсов Icommand и INotifyPropertyChanged
Использую такую реализацию - INotifyPropertyChanged
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
    /// <summary>Базовый класс с реализацией INPC </summary>
    public abstract class OnPropertyChangedClass : INotifyPropertyChanged
    {
        /// <summary>Событие для извещения об изменения свойства</summary>
        public event PropertyChangedEventHandler PropertyChanged;
        /// <summary>Метод для вызова события извещения об изменении свойства</summary>
        /// <param name="propertyName">Изменившееся свойство</param>
        public void OnPropertyChanged([CallerMemberName]string propertyName = "") =>
                    PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }


И такую реализацию - Icommand
Код: 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.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
    #region Делегаты для методов WPF команд
    public delegate void ExecuteHandler(object parameter);
    public delegate bool CanExecuteHandler(object parameter);
    #endregion

    #region Класс команд - RelayCommand
    /// <summary>Класс реализующий интерфейс ICommand для создания WPF команд</summary>
    public class RelayCommand : ICommand
    {
        private readonly CanExecuteHandler _canExecute;
        private readonly ExecuteHandler _onExecute;
        private readonly EventHandler _requerySuggested;

        /// <summary>Событие извещающее об измении состояния команды</summary>
        public event EventHandler CanExecuteChanged;

        /// <summary>Конструктор команды</summary>
        /// <param name="execute">Выполняемый метод команды</param>
        /// <param name="canExecute">Метод разрешающий выполнение команды</param>
        public RelayCommand(ExecuteHandler execute, CanExecuteHandler canExecute = null)
        {
            _onExecute = execute;
            _canExecute = canExecute;

            _requerySuggested = (o, e) => Invalidate();
            CommandManager.RequerySuggested += _requerySuggested;
        }

        public void Invalidate()
            => Application.Current.Dispatcher.BeginInvoke(new Action(() =>
            {
                CanExecuteChanged?.Invoke(this, EventArgs.Empty);
            }), null);

        /// <summary>Вызов разрешающего метода команды</summary>
        /// <param name="parameter">Параметр команды</param>
        /// <returns>True - если выполнение команды разрешено</returns>
        public bool CanExecute(object parameter) => _canExecute == null ? true : _canExecute.Invoke(parameter);

        /// <summary>Вызов выполняющего метода команды</summary>
        /// <param name="parameter">Параметр команды</param>
        public void Execute(object parameter) => _onExecute?.Invoke(parameter);
    }
    #endregion



Для соединения с UC объявляю интерфейс и его реализацию
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
namespace WPF1903
{
    public interface IFilterWarehouse 
    {
        string Value { get;  set; }
        RelayCommand Command { get; }
    }
    public class FilterWarehouse : OnPropertyChangedClass, IFilterWarehouse
    {
        private string _value;

        public string Value { get => _value; set { _value = value; OnPropertyChanged(); } }
        public RelayCommand Command { get; set; }
    }
}


Сам UC
Код: xml
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.
<UserControl x:Class="WPF1903.Warehouse"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:local="clr-namespace:WPF1903"
             mc:Ignorable="d" Width="287" Height="90"
             DataContext="{x:Type local:IFilterWarehouse}">
    <Grid Background="#FFA7B2B1">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto" />
            <ColumnDefinition />
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition />
        </Grid.RowDefinitions>
        <TextBlock Grid.Column="1" Grid.ColumnSpan="2"  
                   HorizontalAlignment="Center" VerticalAlignment="Center" 
                   Background="Yellow" Text="Параметры фильтра группы" 
                   Padding="5"/>
        <TextBlock Grid.Column="1" Grid.Row="1" 
                   HorizontalAlignment="Center" VerticalAlignment="Center" 
                   Text="Назв. группы" Margin="5"/>
        <TextBox Grid.Column="2" Grid.Row="1"
                 Margin="5"  TextWrapping="Wrap" 
                 Text="{Binding Value}" VerticalAlignment="Center" />
        <Button  Margin="5" ToolTip="Подстановка" 
                 Command="{Binding Command}" 
                 CommandParameter="{Binding Value}" >
            <Image Source="Resources/Стрелка Влево.png"/>
        </Button>
    </Grid>
</UserControl>



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.
31.
32.
33.
34.
35.
    public class WarehouseVM : OnPropertyChangedClass
    {
        /// <summary>Оригинальный список</summary>
        public IEnumerable<string> OriginalList => new string[]
          {
            "Первый",
            "Второй",
            "Третий",
            "Четвёртый",
            "Пятый",
            "Шестой"
          };
        /// <summary>Отфильтрованный список</summary>
        public IEnumerable<string> FilteredList { get; private set; }
        /// <summary>Экземпляр фильтра</summary>
        public FilterWarehouse Filter { get; } = new FilterWarehouse();

        /// <summary>Безпараметрический конструктор</summary>
        public WarehouseVM()
        {
            Filter.Command = new RelayCommand(FilterMetod);
            FilterMetod(null);
        }
        /// <summary>Метод фильтрации</summary>
        /// <param name="parameter">Значение фильтра</param>
        private void FilterMetod(object parameter)
        {
            string value = parameter?.ToString();
            if (string.IsNullOrWhiteSpace(value))
                FilteredList = OriginalList;
            else
                FilteredList = OriginalList.Where(item => item.Contains(value));
            OnPropertyChanged(nameof(FilteredList));
        }
    }


И само окно
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
    <Window.DataContext>
        <local:WarehouseVM/>
    </Window.DataContext>
    <StackPanel>
        <ListBox ItemsSource="{Binding OriginalList}"/>
        <ListBox ItemsSource="{Binding FilteredList}"/>
        <local:Warehouse DataContext="{Binding Filter}"/>
    </StackPanel>



Из этого примера видно, что при правильной реализации WPF решения, задачи передачи данных от одной View другой (от панели к панели, от UC к окну и т.п.) даже не возникает. Все элементы View только ОТОБРАЖАЮТ данные, а хранятся они уже на уровне VM или Model и там же обрабатываются.
...
Рейтинг: 0 / 0
Взаимодействие UserControl в рамках приложения
    #39814886
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123ViPRosиз всех местных преподов ни один не дал ссылку хоть на одну свою прогу (исключение - бешеный меринос)а где твоя на WPF?
в игрушки не играю :) некогда
...
Рейтинг: 0 / 0
Взаимодействие UserControl в рамках приложения
    #39814888
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eld Hasp,

не, так не пойдет
это принудительное изменение
а Моисей берет когда хочет
...
Рейтинг: 0 / 0
Взаимодействие UserControl в рамках приложения
    #39814890
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ViPRosEld Hasp,

не, так не пойдет
это принудительное изменение
а Моисей берет когда хочетНе понял о чем Вы.
...
Рейтинг: 0 / 0
Взаимодействие UserControl в рамках приложения
    #39814892
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosв игрушки не играю :) некогда
ну понятно. Не играю, не предлагаю, не анализирую.
...
Рейтинг: 0 / 0
Взаимодействие UserControl в рамках приложения
    #39814893
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеевСударь, Вы хоть вдумайтесь, что за ахинею несёте - здесь же не митингВместо 100 страниц обсуждения (твоего кода) попробуй пример штатный в WPF что показывают.
На моей памяти ты ни разу не пробовал примеры из доков и от своих товарищей.
...
Рейтинг: 0 / 0
Взаимодействие UserControl в рамках приложения
    #39814921
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Eld Hasp, сегодня, 16:20 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1312511&msg=21887876][21887876]
>Не зная в целом что Вы реализуете…
<Вообще-то в целом реализую информационную систему в формате двухзвенки на базе WPF.
Конкретный пример показывает реализацию взаимодействия панели А, работы с таблицей <Группы>, и панели Б ввода строкового фрагмента фильтра.
Панель А есть UserControl для работы с таблицей <Группы> (см. слайд). Пользователь, используя панель Б, уточняет запрос на построение выборки из таблицы. К примеру, если введет <Х>, то в списке грида панели А останется <Хранилище>.
Итак панель А:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
namespace ns_Хранилище {
  public partial class uc_Группы : UserControl, I_Плитка  {
    Guid pk_Guid;
    ObservableCollection<row_Entity> oc_Entity=new ObservableCollection<row_Entity>();  //-- Показываем в DataGrid 
    List<row_Entity> lst_Entity; //-- Временное хранение выборки
    public row_Entity xrow;
    int iRow;
    string caption_Entity = "Работа с таблицей групп";
    IMainWindow при;  //-- интерфейс MainWindow
    I_Плитка зак ;       //-- интерфейс заказчика
    Object xuc;            //-- ссылка на UserConrtol заказчика  
    public bool bl_Разрешение = false;

    //-- Параметры фильтра 
    //---------------------
    public string str_ГруппаПФ = " ";   //-- хранение текущего значения фрагмента строки фильтра
    . . . 


вызывая панель Б работы с фильтром, применяя интерфейс MainWindow
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
    . . .
    //-- Фильтр
    //--------------------------------------------------------
    private void btc_Фильтр_Click(object sender, RoutedEventArgs e) {
      if (!bl_Разрешение) return; //-- Запрет обработки нажатия
      bl_Разрешение = false;
      при.uc_ДобавитьФ("uc_Группы_Фильтр", (Object)this);
    }
    . . .


пользователь загружает панель Б (её не было в момент выполнения команды при.uc_ДобавитьФ("uc_Группы_Фильтр", (Object)this);)
это
по завершению ввода фрагмента фильтра выполняется это - private void btc_Выбор_Click… и панель Б ликвидируется.
Обработка выбора в панели А:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
    . . .
    //-- Подстановка
    //--------------------------------------------------------
    public void uc_Подстановка(string name, Object obj) {
      if (name == "uc_Группы_Фильтр")      {
        str_ГруппаПФ = (obj as uc_Группы_Фильтр).txb_ГруппыПФ.Text;
        bl_Разрешение = true;
        ЗапросДанных();
      }
    }
    . . .


Я не в восторге от Вашего кода и думаю, что ещё более разительно будет отличаться коды всего приложения или хотя бы коды панели А.
...
Рейтинг: 0 / 0
Взаимодействие UserControl в рамках приложения
    #39814922
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВМоисеев>Eld Hasp, сегодня, 16:20 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1312511&msg=21887876][21887876]
>Не зная в целом что Вы реализуете…
<Вообще-то в целом реализую информационную систему в формате двухзвенки на базе WPF.
Конкретный пример показывает реализацию взаимодействия панели А, работы с таблицей <Группы>, и панели Б ввода строкового фрагмента фильтра.
Панель А есть UserControl для работы с таблицей <Группы> (см. слайд). Пользователь, используя панель Б, уточняет запрос на построение выборки из таблицы. К примеру, если введет <Х>, то в списке грида панели А останется <Хранилище>.

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

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

Кроме проблем с самой реализацией в Вашем подходе, возникают проблемы и с информацией. Так как так ни кто не делает, некому Вам и подсказать как же это можно реализовать. Всю информацию Вам приходится добывать и раскапывать самостоятельно.

Я понимаю, что мой код Вам не понятен или не нравится, но это не изменяет того факта, что он сделан в типичном для WPF решения подходе. И там где с Вашим подходом придётся провозится неделю и с неизвестным результатом, в типов можно сделать за несколько часов. И даже если что-то не получается, то есть к кому обратиться за помощью. Так как таким образом делают все. Для всех такие решения прозрачны, читаемы и понятны. В них проще разобраться, найти ошибки и поправить.

И это не просто какой-то "заговор" программистов - это официальный подход разработчика Net и WPF - фирмы MicroSoft. WPF специально "затачивается" и оптимизируется под MVVM паттерн. Он и разработан по сути именно для реализации этого паттерна.

Ещё раз говорю - дело Ваше. Но то как Вы делаете, это трудно, долго, нетипично. Вы значительно, в десятки раз, сами себе затрудняете создание приложений.
...
Рейтинг: 0 / 0
Взаимодействие UserControl в рамках приложения
    #39814955
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев,
Что я и говорил.
Вы никогда не примите "не ваш код".
Продоожайте хоть 100 страниц, если будут желающие.
Удачи.
...
Рейтинг: 0 / 0
Взаимодействие UserControl в рамках приложения
    #39814996
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Eld Hasp, вчера, 23:51 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1312511&msg=21887964][21887964]
>...это не типичный для WPF подход…
<Согласен, видимо действительно так.
При моём подходе инфосистема реализуется множеством приложений. Каждое приложение есть <MainWindow, множество UserVontrol (рабочие панели), класс глобальные переменные>. Я хочу, чтобы пользователь имел на рабочем столе только тот инструмент, что необходим в данный момент по сути решаемой задачи. Если он работает с информацией Хранилища приложений, то использует только приложение Хранилище, остальные не загружаются. Если занимается с информацией по сотрудникам, то применяет приложение - Сотрудники и т.п. Допустим использует в данный момент работает с панелью <Приложения> приложения <Хранилище>.
Пример на слайде.
Сканируя список сущностей <Приложения> в гриде, находит, что надо поменять поле <Группа> в конкретной сущности. Инструмента (панель Группа) работы с сущностью <Группа> на рабочем столе пока нет. Двойной клик на поле Группа выбранной строки грида активизирует загрузку панели Группа. Она занимает рабочую зону стола (MainWindow), панель Приложения становиться неактивной - сдвигается в зону ожидания рабочего стола, функциональные кнопки удаляются, чтобы не мозолили глаза. Пользователь переключается на работу с панелью Группы. По завершению работы панели Группы, если осуществлён выбор нужной группы, осуществляется подстановка в поле Группа выбранной строки панели Приложения.
...
Рейтинг: 0 / 0
Взаимодействие UserControl в рамках приложения
    #39815007
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеевЕсли он работает с информацией Хранилища приложений, то использует только приложение Хранилище, остальные не загружаются.это никак не мешает использовать MVVM. Никто не требует же делать одну GOD-модель на все приложение.
...
Рейтинг: 0 / 0
Взаимодействие UserControl в рамках приложения
    #39815008
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВМоисеев>Eld Hasp, вчера, 23:51 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1312511&msg=21887964][21887964]
>...это не типичный для WPF подход…
<Согласен, видимо действительно так.
При моём подходе инфосистема реализуется множеством приложений. Каждое приложение есть <MainWindow, множество UserVontrol (рабочие панели), класс глобальные переменные>. Я хочу, чтобы пользователь имел на рабочем столе только тот инструмент, что необходим в данный момент по сути решаемой задачи.....
Как Вы подходите к реализации я примерно понял.
Для Вас основа приложения это интерфейс взаимодействия с пользователем.

Так создавали приложения раньше - лет 30 назад. Я тогда работал и помню первые интерфейсы ещё когда даже Norton Commander не было. Помню как их программировали, как создавали интерфейсы для выносных дисплеев, работали в них с БД,

Да, это всё было, но было это 30 лет назад! Тогда не было практически ни каких инструментов (ПО) для реализации всего этого и приходилось всё делать кастомно. Этот подход во многом сохранился сейчас и в сообществе WinForms программирования. В основном, потому что там очень большое количество "старых" программистов которые закостенели и не осваивают новые инструменты. А "молодёжь" смотрит на "стариков" и думает, что такое программирование и есть правильное. Это не так.

WPF же ушёл уже намного дальше. Он создавался когда уже было множество различных других инструментов для создания пользовательских интерфейсов. И к тому времени уже были опробованы множество решений и паттернов облегчающих создание приложений. MicroSoft решила, что MVVM - это самый удобный из них для приложений в её ОС. И поэтому, именно с учётом реализации в этом паттерне, и разработала WPF.

Но особенностью MVVM является создание приложения начиная с Модели, то есть части приложения отвечающего за обработку данных. Этот подход значительно противоречит знаниям "старых" программистов, поэтому редко кто из них научился полноценно использовать WPF. Даже те кто использую, то (за редким и исключением) используют полностью отбрасывая весь слой WPF созданный для взаимодействия с данными. То есть фактически превращая WPF в WinForms - только используя "модное" название.

Ещё раз пишу. Такое программирование ОЧЕНЬ сильно затрудняет создание приложений. ОЧЕНЬ - это в десятки раз!
...
Рейтинг: 0 / 0
Взаимодействие UserControl в рамках приложения
    #39815012
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Каждый пост Eld Hasp в этом топике можно прям на стену вешать!
...
Рейтинг: 0 / 0
Взаимодействие UserControl в рамках приложения
    #39815023
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProКаждый пост Eld Hasp в этом топике можно прям на стену вешать!

А самого вместо люстры
...
Рейтинг: 0 / 0
Взаимодействие UserControl в рамках приложения
    #39815026
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eld HaspСкорее всего, это связанно, с отсутствием в WF привязок. И, соответственно, для реализации полноценного MVVM надо кастомно в View реализовывать прослушку всех свойств ViewModel. Это сложно для подавляющего большинства преподавателей. И, соответственно, они не учат этому студентов.
Но в WF довольно просто использовать MVC паттерн. В нём уже функция обновления View возложена на контролер.
Книге Брайана Нойеса "Привязка данных в Windows Forms", изданной на русском, уже 10 лет.
Ничего сложного там нет и про MVP рассказано.
...
Рейтинг: 0 / 0
Взаимодействие UserControl в рамках приложения
    #39815028
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дмитрий МухEld HaspСкорее всего, это связанно, с отсутствием в WF привязок. И, соответственно, для реализации полноценного MVVM надо кастомно в View реализовывать прослушку всех свойств ViewModel. Это сложно для подавляющего большинства преподавателей. И, соответственно, они не учат этому студентов.
Но в WF довольно просто использовать MVC паттерн. В нём уже функция обновления View возложена на контролер.
Книге Брайана Нойеса "Привязка данных в Windows Forms", изданной на русском, уже 10 лет.
Ничего сложного там нет и про MVP рассказано.Сложного нет! Согласен!
Но костность "стариков" не позволяет это освоить.
Если же сравнивать с WPF, то в WinForms сделать правильно всё же намного сложнее. Но лучше и проще чем делать неправильно.
...
Рейтинг: 0 / 0
Взаимодействие UserControl в рамках приложения
    #39815031
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eld HaspДмитрий Мухпропущено...

Книге Брайана Нойеса "Привязка данных в Windows Forms", изданной на русском, уже 10 лет.
Ничего сложного там нет и про MVP рассказано.Сложного нет! Согласен!
Но костность "стариков" не позволяет это освоить.
Если же сравнивать с WPF, то в WinForms сделать правильно всё же намного сложнее. Но лучше и проще чем делать неправильно.
Старики старикам - рознь :)

MVC, MVP, MVVM ведь "старики" и придумали.

The MVC pattern was originally conceived in 1978-79 by Trygve Reenskaug and had the primary goal of providing an interface for users to manipulate multiple views of data as if working with real world entities.

Взято отсюда: Interactive Application Architecture Patterns .

Просто многим банально лень изучать что-либо.
Хотя в институте вроде объясняли, что лучшие практики, подходы и технологии всегда на чём-то основаны :)
...
Рейтинг: 0 / 0
Взаимодействие UserControl в рамках приложения
    #39815034
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eld HaspЕсли же сравнивать с WPF, то в WinForms сделать правильно всё же намного сложнее.
Так ведь интереснее пробовать приложить различные архитектурные подходы там, где за тебя это не сделали.
Писать свои компоненты, а не использовать сторонние.

И вот одни "старики" в своё время это сделали. И теперь результатами их труда пользуется множество разработчиков.
А другие "старики" как говнокодили, так и продолжают.
...
Рейтинг: 0 / 0
Взаимодействие UserControl в рамках приложения
    #39815035
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Eld Hasp, сегодня, 15:12 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1312511&msg=21888203][21888203]
>...то есть части приложения отвечающего за обработку данных…
<Что Вы понимаете под обработкой данных? У меня сущности хранятся либо в списках, либо ObservableCollection. Что нужно с ними делать?
...
Рейтинг: 0 / 0
Взаимодействие UserControl в рамках приложения
    #39815043
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дмитрий МухСтарики старикам - рознь :)

Просто многим банально лень изучать что-либо.
Хотя в институте вроде объясняли, что лучшие практики, подходы и технологии всегда на чём-то основаны :)
Так и есть. Я писал о подавляющем большинстве.
Сам я тоже "старик" - если 30 лет назад уже работал программистом...

Дмитрий МухEld HaspЕсли же сравнивать с WPF, то в WinForms сделать правильно всё же намного сложнее.
Так ведь интереснее пробовать приложить различные архитектурные подходы там, где за тебя это не сделали.
Писать свои компоненты, а не использовать сторонние.

И вот одни "старики" в своё время это сделали. И теперь результатами их труда пользуется множество разработчиков.
А другие "старики" как говнокодили, так и продолжают.Осознанно пробовать и придумывать новое - это одно.
А "тормозить" из-за костности на старом - это другое.
...
Рейтинг: 0 / 0
Взаимодействие UserControl в рамках приложения
    #39815048
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eld HaspДмитрий Мухпропущено...

Так ведь интереснее пробовать приложить различные архитектурные подходы там, где за тебя это не сделали.
Писать свои компоненты, а не использовать сторонние.

И вот одни "старики" в своё время это сделали. И теперь результатами их труда пользуется множество разработчиков.
А другие "старики" как говнокодили, так и продолжают.Осознанно пробовать и придумывать новое - это одно.
А "тормозить" из-за костности на старом - это другое.


Первое - это любознательность. Второе - это лень, прокрастинация, невежество.
...
Рейтинг: 0 / 0
Взаимодействие UserControl в рамках приложения
    #39815049
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВМоисеев>Eld Hasp, сегодня, 15:12 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1312511&msg=21888203][21888203]
>...то есть части приложения отвечающего за обработку данных…
<Что Вы понимаете под обработкой данных? У меня сущности хранятся либо в списках, либо ObservableCollection. Что нужно с ними делать?Я не знаю, что, конкретно, с ними можно сейчас сделать.
Для этого надо знать целиком Ваше приложение, так как оно, очень вероятно, изначально спроектировано неверно.
А ошибки проектирования косметическими мерами не исправишь.

Если есть желание научиться правильному созданию WPF приложения и есть время на это, то можно учиться на Вашем.
Но его, скорее всего, придётся переделывать полностью.
И начинать надо будет с этапа проектирования.

Будет желание - пишите. Чем смогу помогу.

В данном же случае, надо хотя бы целиком знать Вашу View. Чтобы понимать где что с чем стыкуется, где какие данные.
...
Рейтинг: 0 / 0
Взаимодействие UserControl в рамках приложения
    #39815051
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eld HaspВ данном же случае, надо хотя бы целиком знать Вашу View. Чтобы понимать где что с чем стыкуется, где какие данные.Oh no! :)
...
Рейтинг: 0 / 0
Взаимодействие UserControl в рамках приложения
    #39815086
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Eld Hasp, сегодня, 17:04 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1312511&msg=21888262][21888262]
>Я не знаю, что, конкретно, с ними можно сейчас сделать.
<Я не точно сформулировал мысль - что делать с моими данными я знаю, но что Вы подразумеваете под обработкой ваших данных.
И потом, ObservableCollection показываю в гриде так:
Код: c#
1.
2.
3.
4.
5.
      . . .
      if (lst_Entity != null) {
        oc_Entity = new ObservableCollection<row_Entity>(lst_Entity); lst_Entity = null;
        dgv_Entity.ItemsSource = oc_Entity;
     . . .



если это Вам что-то говорит, а то расчирикались насчет привязок.
И так использую:
Код: c#
1.
2.
3.
4.
5.
6.
namespace ns_ИнспекцииВД {
  public class cls_СотрудникД : INotifyPropertyChanged {
    private string _str_МестоРож;
    private string _str_СемПол;
    private string _str_Обр;
  . . .



и сущности во всех панелях имеют одинаковые имена, и списки тоже. Хотя Вам об этом рановато.
...
Рейтинг: 0 / 0
Взаимодействие UserControl в рамках приложения
    #39816091
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий Мух
MVC, MVP, MVVM ведь "старики" и придумали.


Из всех аббревиатур можно смело выкинуть первую букву, она там для красоты
...
Рейтинг: 0 / 0
25 сообщений из 99, страница 2 из 4
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Взаимодействие UserControl в рамках приложения
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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