|
0 / 0 / 0
Регистрация: 12.12.2021
Сообщений: 205
|
|
Avalonia (как сделать активной определенную вкладку)12.01.2022, 22:19. Показов 9120. Ответов 82
Метки нет (Все метки)
Здравствуйте! Как в Авалонии сделать, чтобы при нажатии на кнопку на первой вкладке TabControl, включалась вторая вкладка tabControl? Заранее спасибо
0
|
|
| 12.01.2022, 22:19 | |
|
Ответы с готовыми решениями:
82
Сделать активной определенную вкладку tabControl Как при открытии дочернего окна сделать активной вкладку в TabControl?
|
|
1182 / 624 / 160
Регистрация: 19.04.2018
Сообщений: 2,923
|
|||||||
| 18.01.2022, 19:38 | |||||||
|
Чтобы Вам было проще понять, я сделаю Result статическим (хоть это и не правильно).
Не поняв MVVM -- дальше не продвинитесь. Добавлено через 1 минуту Sun1212, ну как сложно -- в реализации минут 5. В объяснениях -- около двух часов. Это много?
0
|
|||||||
|
0 / 0 / 0
Регистрация: 12.12.2021
Сообщений: 205
|
|
| 18.01.2022, 19:39 [ТС] | |
|
limeniye, а как сделать, чтобы обе ViewModel'и "слушали", какое в данный момент значение числа?
0
|
|
|
1182 / 624 / 160
Регистрация: 19.04.2018
Сообщений: 2,923
|
||||||
| 18.01.2022, 19:52 | ||||||
|
Sun1212, для этого есть "события", но пока что обойдёмся без них.
Для простого понимания -- можно сделать бесконечный цикл, который будет постоянно "слушать" Model. Во ViewModel у Вас будет тоже такое свойство(Result), но с "обратнрым вызовом". Обратный вызов -- это реализация в фигурных скобках this.RaiseAndSetIfChanged(ref _resultIndex, value (вот это, но пока Вам рано с этим разбираться):
0
|
||||||
|
0 / 0 / 0
Регистрация: 12.12.2021
Сообщений: 205
|
|
| 18.01.2022, 20:27 [ТС] | |
|
Этот код переместила для первой модели Tab1ViewModel (на первой вкладке кнопка "Сформировать")
public class Tab2ViewModel : ReactiveObject { private int _result; public int Result { get => _result; set => this.RaiseAndSetIfChanged(ref _result, value); } public TabChangingEventArgs TabChanging; public ReactiveCommand<Unit, Unit> DoTheThing { get; } public Tab2ViewModel() { DoTheThing = ReactiveCommand.Create(() => TabChanging?.Invoke(this, 1)); while(true) { Result = Model.Result; } } }
0
|
|
|
1182 / 624 / 160
Регистрация: 19.04.2018
Сообщений: 2,923
|
|||
| 18.01.2022, 20:32 | |||
|
Но зачем для первой ViewModel'е, если там цифра "2" -- Tab2ViewModel*? У Вас на первой странице происходит клик, а вторая "слушает" изменения.
0
|
|||
|
0 / 0 / 0
Регистрация: 12.12.2021
Сообщений: 205
|
|
| 18.01.2022, 20:34 [ТС] | |
|
0
|
|
|
1182 / 624 / 160
Регистрация: 19.04.2018
Сообщений: 2,923
|
|
| 18.01.2022, 20:35 | |
|
Tab_______2_______ViewModel
public class Tab2ViewModel : ReactiveObject
0
|
|
|
0 / 0 / 0
Регистрация: 12.12.2021
Сообщений: 205
|
|
| 18.01.2022, 20:41 [ТС] | |
|
limeniye, поняла), вторая вкладка будет следить за событиями на первой)
Добавлено через 4 минуты На первой вкладке будет обработчик кнопки? <Button Content="Далее" Command="{Binding Сalc_click}" /> Command="{Binding DoTheThing}" - удаляю, правильно я поняла?
0
|
|
|
1182 / 624 / 160
Регистрация: 19.04.2018
Сообщений: 2,923
|
||||
| 18.01.2022, 20:44 | ||||
|
Но формулировка не совсем верная. Вторая вкладка будет следить за изменениями Модели, а вот Модель будет изменять первая вкладка. Представьте, что Вы заказали еду в МакДональдсе. Сотрудник донесёт Ваш бургер от кухни до кассы, а дальше Вы сами должны подойти и забрать этот бургер, Вам его не принесут. Кухня -- это первая вкладка. Касса -- Model, из которой вторая вкладка берёт свой бургер. Или, допустим, Вы хотите попить. Да, Вы можете отхлебнуть из под крана -- но это костыль. Вам нужно промежуточное звено -- кружка. Добавлено через 1 минуту Один Вы удаляете, один оставляете, но как именно он у Вас называется в VM -- я не знаю. В VM, которую я предложл он назвается DoTheThing, поэтому привязка у меня и идёт к нему.
0
|
||||
|
0 / 0 / 0
Регистрация: 12.12.2021
Сообщений: 205
|
|
| 18.01.2022, 20:51 [ТС] | |
|
limeniye, мне надо, чтобы привязка сначала была на Расчет (calc_click), а уже потом перейти на другую вкладку.
0
|
|
|
1182 / 624 / 160
Регистрация: 19.04.2018
Сообщений: 2,923
|
|||||||||||||||||||||||
| 18.01.2022, 21:07 | |||||||||||||||||||||||
|
Давайте разобьём Вашу задачу на две: - Вам нужно перейти на другую страницу нажатием на кнопку; - Вам нужно изменить значение. Как перейти на другую страницу я показал в этом посте и оставил архив с проектом. Осталось только изменить значение на второй странице. Как я понял, на второй странице Вам не нужна кнопка, только на первой. Поэтому я её удалю и комманду для неё тоже.
Что мне для этого нужно: - свойство во ViewModel - TextBlock и биндинг. Добавляю в ViewModel второй страници новое свойство, которое я буду отображать на втором табе:
Советую скачать новый архив: TestTabNavigationForCyberForm.7z
1
|
|||||||||||||||||||||||
|
1182 / 624 / 160
Регистрация: 19.04.2018
Сообщений: 2,923
|
|
| 18.01.2022, 21:11 | |
|
Что, пока что, не ясно? Спрашивайте.
0
|
|
|
0 / 0 / 0
Регистрация: 12.12.2021
Сообщений: 205
|
|
| 18.01.2022, 21:48 [ТС] | |
|
limeniye, спасибо, что подробно объяснили, но от меня другое требуют, нужно чтобы по нажатию кнопки сначала осуществился Расчет, а потом переход на другую вкладку.
Т.е., чтобы 123 был задан не во второй модели, а появился при нажатии на кнопку. Добавлено через 3 минуты Если мы для кнопки удалим привязку DoTheThing, а напишем Command={Binding Calc_click}, то как лучше сделать переход на другую вкладку?
0
|
|
|
1182 / 624 / 160
Регистрация: 19.04.2018
Сообщений: 2,923
|
|
| 18.01.2022, 21:52 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 12.12.2021
Сообщений: 205
|
||||||
| 18.01.2022, 21:53 [ТС] | ||||||
|
Или попробовать в привязку DoTheThing в ReactiveCommand.Create добавить еще код для Расчета?
0
|
||||||
|
1182 / 624 / 160
Регистрация: 19.04.2018
Сообщений: 2,923
|
||
| 18.01.2022, 21:57 | ||
|
Добавлено через 2 минуты Для начала нужно сделать связь Model к ViewModel. Я там сделал Tab2ViewModel и оставил пустой конструктор. Пустой констркутор я оставил для Вас. Вам нужно создать класс Model, который я уже упоминал выше. В нём тоже есть Result. Я бы хотел, чтобы 123 Вы получили не из ViewModel, как на данный момент, а из Model. Управитесь?
0
|
||
|
0 / 0 / 0
Регистрация: 12.12.2021
Сообщений: 205
|
|
| 18.01.2022, 22:00 [ТС] | |
|
limeniye, спасибо! Я завтра попробую, потом напишу
0
|
|
|
1182 / 624 / 160
Регистрация: 19.04.2018
Сообщений: 2,923
|
|
| 18.01.2022, 22:01 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 12.12.2021
Сообщений: 205
|
|
| 19.01.2022, 08:31 [ТС] | |
|
0
|
|
|
1182 / 624 / 160
Регистрация: 19.04.2018
Сообщений: 2,923
|
||||||
| 19.01.2022, 09:23 | ||||||
1
|
||||||
| 19.01.2022, 09:23 | |
|
Как сделать активной вкладку TPageControl Как в Pagecontrol новую (созданную) вкладку сделать активной? Как сделать вкладку активной, если разные маршруты? Сделать вкладку активной при загрузке страницы Как перейти на определенную вкладку? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Вангую, что это не пройдёт модерацию, и на неделе я запущу свой сервер.
Hrethgir 19.07.2026
Эта публикация сейчас в песочнице и ждёт приглашения.
https:/ / habr. com/ ru/ sandbox/ 295048/
начало и оглавление
-
Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование. . .
|
сукцессия 33. открытые вопросы от клауде
anaschu 19.07.2026
"Что накопилось за эту часть А — тринадцать правок, из которых шесть пришли из ваших вопросов и каждая оказалась реальной ошибкой, а не калибровкой: односторонний симбиоз, отсутствующий листопад,. . .
|
32 сукцессия
anaschu 19.07.2026
сукцессия 28‑мерное ядро стабилизировано
Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не «подкручивает» сходимость —. . .
|
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано
Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
|
|
сукцессия 30. Массив проверяющих друг друга моделей
anaschu 18.07.2026
Архитектура сети взаимопроверяющих моделей микоризной сукцессии (v2. 0)
Развитие тензорного ОДУ-ядра и создание кросс-платформенного калибровочного полигона
Уважаемые коллеги!
В продолжение. . .
|
Грибы - это женщины, деревья - это мужчины. Анти инь янь для союза мужчины и женщины.
anaschu 18.07.2026
ГЛАВНЫЙ НАУЧНО-ФИЛОСОФСКИЙ ВЫВОД: Сексуально-Репродуктивный Капитализм против Государства Моногамии
Коллеги, мы вышли на финишную прямую 20-мерного ОДУ-моделирования вековой сукцессии (ветка. . .
|
Текстовый слайдер с нумерацией страниц и кроссбраузерность.
russiannick 18.07.2026
Один мой друг написал текстовый слайдер с нумерацией страниц. Сегодня я расскажу как он умудрился подружить его с кроссбраузерностью.
Очевидно сложно угодить с шириной каждому браузеру. Один крадет. . .
|
Грибы - это мемы, дерево - это человек. Применение микоризной модели к теории меметики Докинза.
anaschu 18.07.2026
Меметический изоморфизм теории «всего»: Грибная сукцессия как модель эволюции идей Докинза
Базовый код системы ОДУ микоризной сукцессии описывает не просто биологию, а универсальную. . .
|