Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > WPF и Silverlight > Cheked ListBox


Автор: Ronin08 19.7.2011, 16:34
Доброго времени суток!
Нужно сделать Checked ListBox в WPF.

Я уже с этой задачей сталкивался, но сейчас я работаю с объектами которые генерирует Entity Framework.

Имеются Объекты которые построены на основе таблиц из БД: Request, Worktype и RequestWorktype (Здесь реализована связь многие ко многим Request и Worktype)

Нужно чтобы в Checked ListBox отображались все записи из Worktype, при этом было бы установлено IsChecked для тех записей которые есть в  RequestWorktype для текущего Request.


Единственное что приходит на ум это из сделать новый объект (NewWorktype), который будет содержать 
Id = Worktype.Id , 
Name = Worktype.Name 
Status = (Если Request.Id есть в RequestWorktype  для Worktype.Id, тогда true иначе false)

Тогда Checked ListBox будет выглядететь так...
Код

<ListBox x:Name="lbxMechVideo" Margin="5,0,5,0"
                         ItemsSource="{Binding Path=NewWorktype}">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <CheckBox IsChecked="{Binding Status , Mode=TwoWay}" 
                          Content="{Binding Name }" />
                </DataTemplate>
            </ListBox.ItemTemplate>
 </ListBox>


Но мне это решение не нравится так как есть не очень приятные нюансы. Может есть более правильное решение, использующее Entity Framework с ее Navigation Property.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)