Проблема WPF ListBoxItem выбора

__str__ должен возвращать строку, а ваш __str__ возвращается кроме строки.

Например, здесь цена преобразуется в строку, используя f'strings

class Product(models.Model):
    name = models.CharField(max_length=128)
    price = models.FloatField()

    def __str__(self):
        return f'{self.price}'

Вы можете форматировать строку различными способами, некоторые из них. Проверьте версию Python при преобразовании в строку

  • str(self.price)
  • "{}".format(self.price)
  • "%s" % (self.price)
  • f"{self.price}" f только в Python 3.6+
19
задан 17 of 26 24 September 2008 в 15:29
поделиться

2 ответа

Для начала поместите содержание вне CheckBox:

<StackPanel Orientation="Horizontal">
    <CheckBox IsChecked="{Binding IsChecked}"/>
    <TextBlock Text="{Binding DisplayText}"/>
</StackPanel>

После этого, необходимо будет удостовериться что нажатие пространства на ListBoxItem результаты в CheckBox проверяемый. Существует много способов сделать это, включая простой обработчик событий на ListBoxItem. Или Вы могли указать обработчик для UIElement.KeyUp или безотносительно в Вашем DataTemplate:

<CheckBox IsChecked="{Binding IsChecked}" UIElement.KeyUp="..."/>
10
ответ дан 30 November 2019 в 05:07
поделиться

Можно также связать свойство IsChecked свойства CheckBox и IsSelected ListBoxItem:

<ListBox>
    <ListBox.ItemTemplate>
        <DataTemplate>
            <CheckBox Content="{Binding DisplayText}" IsChecked="{Binding Path=IsSelected, RelativeSource={RelativeSource AncestorType={x:Type ListBoxItem}}}"/>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>
3
ответ дан 30 November 2019 в 05:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: