|
0 / 0 / 0
Регистрация: 12.12.2021
Сообщений: 205
|
|
Avalonia (как сделать активной определенную вкладку)12.01.2022, 22:19. Показов 9248. Ответов 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 новую (созданную) вкладку сделать активной? Как сделать вкладку активной, если разные маршруты? Сделать вкладку активной при загрузке страницы Как перейти на определенную вкладку? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|
|
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
|
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ
Основная суть и тезисы по измерениям:
0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема.
Объект не может перемещаться в 0D.
1D (Первое измерение):. . .
|
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek
ВВЕДЕНИЕ
Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
|
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
|