WPF как сделать список / просмотр списка не сфокусированным - PullRequest
4 голосов
/ 21 марта 2011

Я некоторое время пытался отобразить некоторые данные в списке / виде списка, которые были бы не сфокусированы (я имею в виду не только список, но и элементы в нем).

Я пытался использовать оба типа списка (listbox и listview), и я использовал их ItemTemplate и ItemContainerStyle. Везде, где мог, я устанавливал для свойства Focusable значение false.

Я не вижу другого способа, кроме отключения списка, но затем мне нужно изменить весь его стиль, чтобы он не выглядел отключенным.

Я что-то пропустил? Есть ли список, доступный только для чтения, о котором я не знаю?

Спасибо за ваши идеи :)

Ответы [ 2 ]

12 голосов
/ 21 марта 2011

Проблема, которую вы, вероятно, видите, состоит в том, что каждый отдельный элемент в списке является фокусируемым.Тем не менее, вы можете переопределить это ... Попробуйте добавить это в ваш список:

  <ListBox.ItemContainerStyle>
    <Style TargetType="Control">
      <Setter Property="Focusable" Value="False" />
    </Style>
  </ListBox.ItemContainerStyle>

Обратите внимание, что это делает элементы невыбираемыми (с помощью клавиатуры или мыши).Вы можете установить выбранный элемент программно, но он больше не подсвечивается автоматически - так что на самом деле это ведет себя почти так же, как ItemsControl.

3 голосов
/ 21 марта 2011

Используйте ItemsControl с TextBlocks вместо ListBox

<ItemsControl ItemsSource="{Binding MyListBoxItemsSource}">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding MyDisplayName}" />
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>
...