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

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


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

Так вот как сделать через модель?
...
Рейтинг: 0 / 0
Заблокировать кнопку, если нет флажков в DataGrid
    #39893546
Volik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Заблокировать кнопку, если нет флажков в DataGrid
    #39893548
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Volik
Shocker.Pro
Появится этот код с модели или, скажем, в конвертере, не столь важно, но он будет.

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

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

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


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

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


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