Существует несколько методов для решения вашей проблемы. Я предполагаю, что у вас есть какой-то список со значением SelectionMode = "Multiple" или "Extended", и вам нужно отслеживать, что выбрано. Иногда мне приходится делать это с отображением флажков внутри списков.
Прежде всего, для вашей задачи создайте новую наблюдаемую коллекцию таким образом (вам понадобится конструктор в SHOPSelect, который принимает SHOP:
Main.ShopList = new ObservableCollection<SHOPSelect>(
from shop in e.Result select new SHOPSelect(shop));
Альтернативным методом является использование частичных классов для определения IsSelected.
public partial class SHOP
{
public bool IsSelected {get; set;}
}
Другой метод заключается в рестайлинге ListBoxItemContainer. Шаблон по умолчанию, используемый Microsoft, находится здесь: http://msdn.microsoft.com/en-us/library/cc278062(v=VS.95).aspx Измените стиль ListBoxItem, заменив
<ContentPresenter
x:Name="contentPresenter"
Content="{TemplateBinding Content}"
ContentTemplate="{TemplateBinding ContentTemplate}"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
Margin="{TemplateBinding Padding}"/>
с
<CheckBox x:Name="contentControl"
IsHitTestVisible="False" VerticalAlignment="Center"
HorizontalAlignment="Left" Margin="6,0,0,0"
IsChecked="{TemplateBinding IsSelected}">
<ContentPresenter Margin="6,0,0,0"
x:Name="contentPresenter"
ContentTemplate="{TemplateBinding ContentTemplate}"
Content="{TemplateBinding Content}"
VerticalAlignment="Center"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" />
</CheckBox>