mscrack
@mscrack
программист

Как получить значение checkboxa из шаблона Listboxa?

Здравствуйте,
Есть база
class MeasureVariation
    {
        public int Id { get; set; }
        public string VariationName { get; set; }
        public bool IsCalc { get; set; }
        public MeasureType MeasureType { get; set; }
    }


есть Listbox
<ListBox x:Name="lb" Height="290" ItemsSource="{Binding LineVariationList}" Margin="0, 0, 0, 10">
                    <ListBox.ItemTemplate>
                        <DataTemplate>
                            <WrapPanel>
                                <CheckBox
                                IsChecked="{Binding Path=IsCalc, Mode=TwoWay}" Content="{Binding Path=VariationName}" Command="{Binding CmdIsCalcChecked, Mode=TwoWay}"/>
                            </WrapPanel>
                        </DataTemplate>
                    </ListBox.ItemTemplate>
                </ListBox>


ViewModel
public ObservableCollection<MeasureVariation> LineVariationList { get; set; }


Планировал, сделать так, при клике на чекбокс значение чекбокса должно было записываться в базу, либо после нажатия на кнопку. Не пойму как мне получить измененное состояние чекбокса.
  • Вопрос задан
  • 34 просмотра
Решения вопроса 1
@WinnerIT
Программист и фотограф-любитель
состояние CheckBox у Вас хранится в IsCalc.
Если Вы хотите запись по изминению значения IsCalc, то это делается в set:
bool _isCalculated;
public bool IsCalc 
get
{
  return _isCalculated;
}
 set{
   if (value != _isCalculated)
{
   _isCalculated = value;
 SaveMeInDbMethod(_isCaluclated);
 // TODO: посмотреть в гугл NotifyPropertyChanged или RaisePropertyChanged() в VievModel
 NotifyPropertyChanged("IsCalc");
 }


Если Вы хотите по клику на CheckBox, то ищите в гугл как привязать Command к EventTrgger. На пример.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
mscrack
@mscrack Автор вопроса
программист
Вопрос решен. Всем спасибо.
Сделал так, во вьюшке добавил кнопку и при нажатии на нее выполняется команда в которой я прохожу по списку и меняю состояния. Сделать через триггеры у меня не получилось, есть куда расти.
foreach (var Item in LineVariationList)
                        {
                            var CurrentMeasureVariation = context.MeasureVariations.FirstOrDefault(item => item.Id == Item.Id);

                            CurrentMeasureVariation.IsCalc = Item.IsCalc;

                            context.Entry(CurrentMeasureVariation).State = EntityState.Modified;
                            context.SaveChanges();
                        }
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы