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

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

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

Author24 — интернет-сервис помощи студентам
Вызов методов событий 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.07.2017, 14:46
Ответы с готовыми решениями:

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

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

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

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

7
2735 / 2041 / 380
Регистрация: 22.07.2011
Сообщений: 7,731
16.07.2017, 20:25 2
Точкой входа в программу является функция Main , которая обьявлена в сгенерированном классе и скрыта в проекте за ненадобностью. А в вашем случае окно и обработка событий для его элементов - вполне нормальная вещь т.к они тесно связаны общей логикой , где по вашему еще они должны быть ?
Можно их делегировать , если нужно , или использовать команды
https://metanit.com/sharp/wpf/7.1.php
0
6 / 6 / 0
Регистрация: 10.10.2012
Сообщений: 140
17.07.2017, 02:42  [ТС] 3
как где? )) в Qt я все это дело убираю из main, все находится в классах логики GUI, в WinForm тоже самое, почему тут такая жесткая привязка
0
2735 / 2041 / 380
Регистрация: 22.07.2011
Сообщений: 7,731
17.07.2017, 14:29 4
Цитата Сообщение от gomodril Посмотреть сообщение
как где? )) в Qt я все это дело убираю из main, все находится в классах логики GUI, в WinForm тоже самое, почему тут такая жесткая привязка
Вы что то в понятиях путаете )
MainWindow - это и есть класс логики GUI. , разница лишь в том , что в тех же вин.формах обьекты GUI создаются в конструкторе императивно , а тут есть возможность задать структуру декларативно , через XAML - что намного более удобно.
0
6 / 6 / 0
Регистрация: 10.10.2012
Сообщений: 140
17.07.2017, 14:42  [ТС] 5
Может я чего и путаю в понятиях и не так объясняю т.к. не профессиональный программист, но в Qt в функции main у меня создается объект GUI, и затем вызывается основной метод этого GUI, т.е. вся реализация идет уже в объектах, события кнопок и других элементов GUI.
В общем тему закрыли, я понял что это не возможно на C# WPF.
0
Администратор
Эксперт .NET
17019 / 13372 / 5217
Регистрация: 17.03.2014
Сообщений: 27,342
Записей в блоге: 1
17.07.2017, 15:15 6
Цитата Сообщение от 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
6 / 6 / 0
Регистрация: 10.10.2012
Сообщений: 140
17.07.2017, 15:17  [ТС] 7
спс, проверю ))
0
2735 / 2041 / 380
Регистрация: 22.07.2011
Сообщений: 7,731
17.07.2017, 17:15 8
Если нужно совсем от типа GUI абстрагироваться и реализовать GUI логику в отдельной прослойке , можно MVP заюзать. , но для этого нужно унифицировать методы работы с интерфейсом и прочие накладные расходы в реализации. А иначе смысла в вашем ConnectModel большого не прослеживается , по сути вы там повторите тот же самый MainWindow.
1
17.07.2017, 17:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.07.2017, 17:15
Помогаю со студенческими работами здесь

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

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

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

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

Как можно реализовать параметры в классе для сериализации?
Добрый день. Пишу клиент-серверное приложение, данные передаю при помощи XmlSerializer. Сервер...

Необходимо реализовать событие в одном классе, а обработчик в другом
Помогите реализовать событие, чтобы в одном классе оно создавалось, а в другом обрабатывалось:...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru