У меня есть возможное решение.
Настройте ItemContainerStyle, добавьте StackLayout или Grid или что-нибудь еще вокруг ContentControl.Затем измените существующие состояния, чтобы показать или скрыть свои флажки (при необходимости).Добавьте свойство для привязки флажков, которые не сохраняются с вашими данными, и {Binding YourNewProperty} к флажку XAML.
Теперь вы сможете контролировать и читать выбранные флажки через ваш текстовый текст.
<CheckBox Content="CheckBox" Margin="0,0,50,0" VerticalAlignment="Top" d:LayoutOverrides="Width" IsChecked="{Binding YourNewProperty}"/>
<ContentPresenter x:Name="contentPresenter" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}"/>
Вы также можете получить доступ к флажкам напрямую, используя следующие элементы в цикле элементов списка.Я думаю, что использовать технику привязки просто.
foreach (var loopItem in listBox1.Items)
{
ListBoxItem itemToCheck = listBox1.ItemContainerGenerator.ContainerFromItem(loopItem) as ListBoxItem;
// code to find the check box control
// find a ContentPresenter of that list item.. [Call FindVisualChild Method]
ContentPresenter ContentPresenterObj = FindVisualChild<ContentPresenter>(itemToCheck);
// call FindName on the DataTemplate of that ContentPresenter
DataTemplate DataTemplateObj = ContentPresenterObj.ContentTemplate;
CheckBox Chk = (CheckBox)DataTemplateObj.FindName("ChkList", ContentPresenterObj);
// get a selected checkbox items.
if (Chk.IsChecked == true)
{
MessageBox.Show(Chk.Content.ToString().Trim());
}
}