Гость
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Заблокировать кнопку, если нет флажков в DataGrid / 19 сообщений из 19, страница 1 из 1
24.11.2019, 11:14
    #39893519
Volik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заблокировать кнопку, если нет флажков в DataGrid
У меня есть на форме DataGrid, где в первом столбце находятся checkbox'ы.
Если хоть 1 выделен, то свойство IsEnabled кнопки под таблицей должно стать True, иначе False.
Как это можно сделать, не отступая от модели MVVM?
...
Рейтинг: 0 / 0
24.11.2019, 11:42
    #39893528
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заблокировать кнопку, если нет флажков в DataGrid
это можно сделать на стороне представления, а можно на стороне модели. Ты как хочешь?
...
Рейтинг: 0 / 0
24.11.2019, 11:45
    #39893529
Volik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заблокировать кнопку, если нет флажков в DataGrid
А на стороне ModelView никак?
Предложите тогда оба варианта...
...
Рейтинг: 0 / 0
24.11.2019, 11:55
    #39893531
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заблокировать кнопку, если нет флажков в DataGrid
Volik
А на стороне ModelView
это что за сторона такая?
Ну я вообще под словом модель имел ввиду ViewModel конечно...
Просто отслеживаешь события изменения элементов коллекции и выставляешь нужное свойство модели, на которое уже завязан IsEnabled
...
Рейтинг: 0 / 0
24.11.2019, 12:21
    #39893536
Volik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заблокировать кнопку, если нет флажков в DataGrid
Shocker.Pro,

"Просто отслеживаешь события изменения элементов коллекции".
Вот это самое непонятное.
Единственное, что я смог найти, это в свойствах DataGridCheckBoxColumn указать:
Код: xml
1.
2.
3.
 <Style.Setters>
   <EventSetter Event="CheckBox.Checked" Handler="OnChecked"/>
 </Style.Setters>


И во View в OnChecked обновлять свойство IsEnabled. Но это же отступление от модели MVVM?
Хотелось бы как-то сделать так, чтобы кода в View нового не появилось.
...
Рейтинг: 0 / 0
24.11.2019, 12:25
    #39893541
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заблокировать кнопку, если нет флажков в DataGrid
Volik
"Просто отслеживаешь события изменения элементов коллекции".
Вот это самое непонятное.
это В МОДЕЛИ.
Если ты пытаешься написать что-то на стороне xaml, это уже представление
...
Рейтинг: 0 / 0
24.11.2019, 12:28
    #39893542
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заблокировать кнопку, если нет флажков в DataGrid
Volik
Хотелось бы как-то сделать так, чтобы кода в View нового не появилось.
У тебя все равно появится код, который должен либо отслеживать и рассчитываться количество нажатых и отжатых чекбоксов, либо при каждом клике на чекбокс просматривать список на предмет нажатых чебоксов. Появится этот код с модели или, скажем, в конвертере, не столь важно, но он будет.
...
Рейтинг: 0 / 0
24.11.2019, 12:29
    #39893543
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заблокировать кнопку, если нет флажков в DataGrid
Volik
кода в View
Что такое "код во View"? Ты имеешь ввиду code behind? Как у тебя организован MVVM в приложении? По хорошему должны быть модели и темплейты, а у темплейтов нет code behind
...
Рейтинг: 0 / 0
24.11.2019, 12:30
    #39893545
Volik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заблокировать кнопку, если нет флажков в DataGrid
Shocker.Pro
Появится этот код с модели или, скажем, в конвертере, не столь важно, но он будет.

Так вот как сделать через модель?
...
Рейтинг: 0 / 0
24.11.2019, 12:32
    #39893546
Volik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заблокировать кнопку, если нет флажков в DataGrid
Shocker.Pro
Volik
кода в View
Что такое "код во View"? Ты имеешь ввиду code behind? Как у тебя организован MVVM в приложении? По хорошему должны быть модели и темплейты, а у темплейтов нет code behind

У меня есть View (код XAML и файл cs с 2 строками:
Код: c#
1.
2.
  InitializeComponent();
  DataContext = _viewModel = new MyViewModel();


Все остальное делается в классе MyViewModel.
...
Рейтинг: 0 / 0
24.11.2019, 12:35
    #39893548
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заблокировать кнопку, если нет флажков в DataGrid
Volik
Shocker.Pro
Появится этот код с модели или, скажем, в конвертере, не столь важно, но он будет.

Так вот как сделать через модель?
В смысле? Подписываешься на события изменения поля флажка. (только не забудь своевременно отписываться, чтобы избежать утечки памяти)
...
Рейтинг: 0 / 0
24.11.2019, 12:41
    #39893550
Volik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заблокировать кнопку, если нет флажков в DataGrid
Shocker.Pro
Volik
пропущено...

Так вот как сделать через модель?
В смысле? Подписываешься на события изменения поля флажка.

Таким образом?
Код: xml
1.
2.
3.
 <Style.Setters>
   <EventSetter Event="CheckBox.Checked" Handler="OnChecked"/>
 </Style.Setters>


Тогда этот обработчик придется написать в коде View.
А я хотел через ViewModel.
...
Рейтинг: 0 / 0
24.11.2019, 13:02
    #39893562
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заблокировать кнопку, если нет флажков в DataGrid
Так подписывайся во ViewModel. Причем тут xaml? xaml - это view
...
Рейтинг: 0 / 0
24.11.2019, 13:03
    #39893563
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заблокировать кнопку, если нет флажков в DataGrid
Если ты хочешь подписаться именно через View - тоже можно
Только используй не события, а команды
Команды можно привязывать к ViewModel через {Binding}
...
Рейтинг: 0 / 0
24.11.2019, 13:09
    #39893566
Volik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заблокировать кнопку, если нет флажков в DataGrid
Shocker.Pro
Так подписывайся во ViewModel. Причем тут xaml? xaml - это view

Можно пример? На что подписываться?
ViewModel ничего не знает о View.
...
Рейтинг: 0 / 0
24.11.2019, 13:33
    #39893572
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заблокировать кнопку, если нет флажков в DataGrid
Зачем модели знать что-то о вью?
У тебя в модели есть коллекция, в коллекции есть элементы, у элементов есть поле, которое у тебя привязано к чебоксу, у поля есть событие на изменение - вот на него и надо подписаться внутри модели.
...
Рейтинг: 0 / 0
24.11.2019, 14:12
    #39893584
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заблокировать кнопку, если нет флажков в DataGrid
Как вариант, в представлении можно перехватить всплывающую команду изменения чекбокса на уровне грида и привязать ее к команде в ViewModel
...
Рейтинг: 0 / 0
24.11.2019, 14:43
    #39893589
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заблокировать кнопку, если нет флажков в DataGrid
В представлении этого лучше не делать. так как элементы DataGrid могут не существовать, но при этом иметь выделенный CheckBox
Если это кнопка, то можно просто сделать проверку того, что есть как минимум 1 "крыжик" который выделен в CanExecute
При переключении CheckBox'а, команда должна будет обновиться сама
...
Рейтинг: 0 / 0
24.11.2019, 15:33
    #39893594
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заблокировать кнопку, если нет флажков в DataGrid
Roman Mejtes
В представлении этого лучше не делать. так как элементы DataGrid могут не существовать, но при этом иметь выделенный CheckBox
Я ж не говорю - считать клики в плюс и в минус ))
По отловленной команде - просмотр коллекции на предмет включенных галок
...
Рейтинг: 0 / 0
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Заблокировать кнопку, если нет флажков в DataGrid / 19 сообщений из 19, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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