WPF, ItemBemplate ListBox имеет CheckBox, но CheckBox, кажется, не является элементом - PullRequest
7 голосов
/ 05 мая 2011

Я просто хотел использовать CheckListBox, который я использовал для Windows Forms.

    <ListBox>
        <ListBox.ItemTemplate>
            <DataTemplate>
                <CheckBox  Content="{Binding Name}"/>
            </DataTemplate>
        </ListBox.ItemTemplate>

Сначала это, казалось, работало, но было множество проблем.Короче говоря, это просто работает так, как CheckBox плавает на реальном элементе, а не CheckBox как элемент.

Я имею в виду, (1) нажатие на текст флажка не выберет элемент ListBox, (2)нажатие клавиши вверх и вниз не снимает флажок.Я должен нажать на флажок, чтобы сфокусировать его.Я искал в Google решения, но не было чистых решений.Я слишком многого хочу?

Мне просто нужно поведение CheckedListBox ...

Я обошел (1), обрабатывая событие PreviewMouseDown флажка и выбирая элемент вручную.Кажется, он не чистый.

Ответы [ 2 ]

9 голосов
/ 05 мая 2011

Это потому, что ваш CheckBox находится в ListBox. Он обрабатывается как элемент списка со всеми его функциями.

Если вы хотите создать только список флажков и не нуждаетесь в логике выбора списка, используйте ItemsControl вместо ListBox. Использование равно. Если вы хотите, чтобы ваш CheckboxList прокручивался, используйте ScrollViewer для переноса ItemsControl.

<ScrollViewer>
   <ItemsControl ItemsSource="{Binding YourItemsCollection">
      <ItemsControl.ItemTemplate>    
          <DataTemplate>                
             <CheckBox  Content="{Binding Name}"/>
          </DataTemplate>
      </ItemsControl.ItemTemplate>
   </ItemsControls>
</ScrollViewer>
0 голосов
/ 12 декабря 2012

Выбранный ответ на связанный вопрос ( Проблема выбора WPF ListBoxItem ) обеспечивает чистое решение! Застрял с тем же сценарием -> нашел свой вопрос -> нашел другой с лекарством. НТН!

...