blockquote>
__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 при преобразовании в строку
blockquote>
str(self.price)
"{}".format(self.price)
"%s" % (self.price)
f"{self.price}"
f только в Python 3.6+
Для начала поместите содержание вне 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="..."/>
Можно также связать свойство 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>