TransWikia.com

C# WPF CheckBox в ListView, как сделать так, чтобы галочка не ставилась при определенном условии?

Stack Overflow на русском Asked on December 22, 2021

Есть CheckBox который внутри ListView:

<GridViewColumn Header="Купон" Width="100">
   <GridViewColumn.CellTemplate>
      <DataTemplate>
         <CheckBox IsChecked="{Binding IsChecked, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Name="CheckCupo" Margin="35, 0, 0, 0" Checked="CheckCupo_Checked" Unchecked="CheckCupo_Unchecked" />
      </DataTemplate>
   </GridViewColumn.CellTemplate>
</GridViewColumn>

Он обусловлен в классе Product:

public class Product
    {
        public string Title { get; set; }
        public int Number { get; set; }
        public int Price { get; set; }
        public string Placement { get; set; }
        public int NumPrice => Number * Price;
        public bool IsChecked { get; set; }
    }

И является частью коллекции:

 List<Product> products;

Которая подключается к ListView:

products = new List<Product> {};

В то время когда мы нажимаем на него срабатывает следующий код:

private void CheckCupo_Checked(object sender, RoutedEventArgs e)
        {
            var product = (sender as CheckBox).DataContext as Product;
            if (cupon_item <= 0)
            {
                GB2_Message.Text = "Сожалею, но у вас не осталось купонов";
                product.IsChecked = false;
            }
            else
            {
                cupon_item--;
                product.Price = product.Price - Convert.ToInt32(product.Price / 10);
                LW.Items.Refresh();
            }
        }

Где проверяется хватает ли человеку купонов (cupon_item) и в случае “если нет”, то галочка в checkBox не должна ставится, НО, она ставится. Следовательно:

product.IsChecked = false;

Не верная часть кода.

Как сделать так, чтобы в случае отсутствия cupon_item галочка не ставилась?

One Answer

Прошу простить. Я протупил.

Забыл обновить таблицу:

private void CheckCupo_Checked(object sender, RoutedEventArgs e)
    {
        var product = (sender as CheckBox).DataContext as Product;
        if (cupon_item <= 0)
        {
            GB2_Message.Text = "Сожалею, но у вас не осталось купонов";
            product.IsChecked = false;
            LW.Items.Refresh();
        }
        else
        {
            cupon_item--;
            product.Price = product.Price - Convert.ToInt32(product.Price / 10);
            LW.Items.Refresh();
        }
    }

Сильно не ругайтесь пожалуйста.

Answered by Виктор on December 22, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP