WPF, как сделать ListBox/ListView.
Вопрос
Я некоторое время пытался отобразить некоторые данные в списке/списках, которые были бы не сбитыми (я имею в виду не только список, но и элементы в нем).
Я пытался с обоими типами списка (Listbox и ListView), и я использовал их ItemTemplate и ItemContainerStyle. Везде, где я мог бы, я установил фокусируемое свойство на ложь.
Я не вижу другого способа отключения списка, но тогда я должен изменить весь его стиль, чтобы он не был отключен.
Я что -то пропустил? Есть ли список только для чтения, о котором я не знаю?
Спасибо за ваши идеи :)
Решение
Проблема, которую вы, вероятно, видите, заключается в том, что каждый отдельный элемент в списке подходит для фокусировки. Тем не менее, вы можете переопределить это ... попробуйте добавить это в свой Listbox:
<ListBox.ItemContainerStyle>
<Style TargetType="Control">
<Setter Property="Focusable" Value="False" />
</Style>
</ListBox.ItemContainerStyle>
Обратите внимание, что это делает элементы небелектыми (на клавиатуре или мышью). Вы можете настроить выбранный элемент программно, но он больше не выделяется автоматически - так что на самом деле это ведет себя почти так же, как ItemsControl
.
Другие советы
Используйте элемент -контроль с текстовыми блоками вместо Listbox
<ItemsControl ItemsSource="{Binding MyListBoxItemsSource}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding MyDisplayName}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>