Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
 Аватар для gomodril
6 / 6 / 0
Регистрация: 10.10.2012
Сообщений: 140

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

16.07.2017, 14:46. Показов 1240. Ответов 7
Метки wpf (Все метки)

Студворк — интернет-сервис помощи студентам
Вызов методов событий Click (OnClick1 и OnClick2) кнопок происходит в классе, который является точкой входа в программу:
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
namespace HD
{
   /// <summary>
   /// Логика взаимодействия для MainWindow.xaml
   /// </summary>
   public partial class MainWindow : Window
   {
      public MainWindow()
      {
         InitializeComponent();
 
         ConnectModel _connModel = new ConnectModel();
      }
 
      int i = 0;
      private void OnClick1(object sender, RoutedEventArgs e)
      {
         i++;
         string message = "--> " + i + ":\r\n" +
             "Объект: " + sender.ToString() + "\r\n" +
             "Источник: " + e.Source.ToString() + "\r\n" +
             "Начальный источник: " + e.OriginalSource;
         lbInfo.Items.Add(message);
 
         btn1.Background = Brushes.LightBlue;
         btn2.Background = Brushes.Pink;
      }
 
      private void OnClick2(object sender, RoutedEventArgs e)
      {
         lbInfo.Items.Clear();
         i = 0;
         btn2.Background = Brushes.Pink;
         btn1.Background = Brushes.LightBlue;
      }
   }
как можно реализовать, что бы вызов происходил не в точке входа, а в другом классе, к примеру в ConnectModel

Добавлено через 5 часов 10 минут
В книге Адам Натана WPF 4, на странице 67 описано про компиляцию XAML, что ключевое слово Class в пространстве имен XAML, определяет подкласс для корневого элемента, этот же файл где располагается корневой элемент называется застраничным файлом. Если я правильно понял, то ссылки в XAML коде на обработчики событий жестко привязаны именно к этому файлу и классу.
Но может есть какой нибудь механизм, изменяющий класс для обработки событий, т.к. располагать код в точке входа прогаммы, коим является данный класс, выглядит не эелегантно, придется весь функционал обрабатываемый событиями формы например кнопками, выносить в этот класс.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.07.2017, 14:46
Ответы с готовыми решениями:

Вызов метода в другом классе
Это метод класса.Я пытаюсь реализовать взятие на проходе пешки.Вопрос почему после каждого хода объект prev=null он стирается(походу объект...

Вызов метода в другом классе
У меня очень обширный вопрос.Если вкратце я пишу курсач шахматы.У меня есть 3 класса Moves.cs Chess.cs и FigureMoving.сs.Я пытаюсь...

Что это жесткая привязка к точке входа, физическое смещение в файле, окрестность точки входа в файл, привязка?
Что это жесткая привязка к точке входа, физическое смещение в файле, окрестность точки входа в файл, привязка к смещению сигнатуры...

7
 Аватар для sau
2773 / 2073 / 386
Регистрация: 22.07.2011
Сообщений: 7,820
16.07.2017, 20:25
Точкой входа в программу является функция Main , которая обьявлена в сгенерированном классе и скрыта в проекте за ненадобностью. А в вашем случае окно и обработка событий для его элементов - вполне нормальная вещь т.к они тесно связаны общей логикой , где по вашему еще они должны быть ?
Можно их делегировать , если нужно , или использовать команды
https://metanit.com/sharp/wpf/7.1.php
0
 Аватар для gomodril
6 / 6 / 0
Регистрация: 10.10.2012
Сообщений: 140
17.07.2017, 02:42  [ТС]
как где? )) в Qt я все это дело убираю из main, все находится в классах логики GUI, в WinForm тоже самое, почему тут такая жесткая привязка
0
 Аватар для sau
2773 / 2073 / 386
Регистрация: 22.07.2011
Сообщений: 7,820
17.07.2017, 14:29
Цитата Сообщение от gomodril Посмотреть сообщение
как где? )) в Qt я все это дело убираю из main, все находится в классах логики GUI, в WinForm тоже самое, почему тут такая жесткая привязка
Вы что то в понятиях путаете )
MainWindow - это и есть класс логики GUI. , разница лишь в том , что в тех же вин.формах обьекты GUI создаются в конструкторе императивно , а тут есть возможность задать структуру декларативно , через XAML - что намного более удобно.
0
 Аватар для gomodril
6 / 6 / 0
Регистрация: 10.10.2012
Сообщений: 140
17.07.2017, 14:42  [ТС]
Может я чего и путаю в понятиях и не так объясняю т.к. не профессиональный программист, но в Qt в функции main у меня создается объект GUI, и затем вызывается основной метод этого GUI, т.е. вся реализация идет уже в объектах, события кнопок и других элементов GUI.
В общем тему закрыли, я понял что это не возможно на C# WPF.
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18242 / 14156 / 5366
Регистрация: 17.03.2014
Сообщений: 28,846
Записей в блоге: 1
17.07.2017, 15:15
Цитата Сообщение от gomodril Посмотреть сообщение
В общем тему закрыли, я понял что это не возможно на C# WPF.
Возможно
C#
1
2
3
4
5
6
7
8
9
10
11
12
    public partial class MainWindow : Window
    {
        ConnectModel _connModel;
        public MainWindow()
        {
            InitializeComponent();
 
            _connModel = new ConnectModel();
            btn1.Click += _connModel.OnClick1;
            btn2.Click += _connModel.OnClick2;
        }
    }
Не забудь отписаться от событий при закрытии окна.
1
 Аватар для gomodril
6 / 6 / 0
Регистрация: 10.10.2012
Сообщений: 140
17.07.2017, 15:17  [ТС]
спс, проверю ))
0
 Аватар для sau
2773 / 2073 / 386
Регистрация: 22.07.2011
Сообщений: 7,820
17.07.2017, 17:15
Если нужно совсем от типа GUI абстрагироваться и реализовать GUI логику в отдельной прослойке , можно MVP заюзать. , но для этого нужно унифицировать методы работы с интерфейсом и прочие накладные расходы в реализации. А иначе смысла в вашем ConnectModel большого не прослеживается , по сути вы там повторите тот же самый MainWindow.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.07.2017, 17:15
Помогаю со студенческими работами здесь

Global Hook и вызов в другом классе
public class Nimaf { UserActivityHook actHook; void LOL1(object sender, System.EventArgs e) { ...

Вызов статического метода класса в другом классе
Как вызвать статический метод из одного класса в другом? вот этот код не работает class A{ static function vivod($msg){ ...

Вызов метода одного класса в другом классе
Привет всем Когда запускаю, то в методе GetOut() вместо имени человека выводится цифра 1 Помогите пожалуйста, заранее спасибо. ...

Вызов динамического аргумента класса в другом классе
Здравствуйте! Появилась проблема, в ходе решения задания, есть переменная scolarship, которая в ходе выполнения работы программы принимает...

Вызов нестатической функции класса в другом классе
Нужно вызвать нестатическую функцию одного класса в другом классе (указатель на функцию передаю в конструкторе) Если коротко, то так: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs . . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru