Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

WPF how to make a listbox/listview unfocusable

I've been trying for a while to display some data in a listbox/listview that would be unfocusable (I mean not only the list, but also the items in it).

I tried with both types of list (listbox and listview), and I used their ItemTemplate and ItemContainerStyle. Everywhere I could, I set the Focusable property to false.

I don't see any other way than disabling the list, but then I have to change all its style, to make it appear not disabled.

Have I missed something? Is there a read-only type of list that I don't know about?

Thank you for your ideas :)

like image 333
Antoine Jeanrichard Avatar asked Mar 21 '11 12:03

Antoine Jeanrichard


2 Answers

The problem you're probably seeing is that each individual item in the list is focusable. However, you can override that... Try adding this to your listbox:

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

Note however that this makes the items unselectable (by keyboard or by mouse). You can set the selected item programmatically, but it doesn't appear to be highlighted automatically any more - so really, this behaves almost the same as an ItemsControl.

like image 166
Dan Puzey Avatar answered Sep 28 '22 00:09

Dan Puzey


Use an ItemsControl with TextBlocks instead of a ListBox

<ItemsControl ItemsSource="{Binding MyListBoxItemsSource}">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding MyDisplayName}" />
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>
like image 20
Rachel Avatar answered Sep 28 '22 02:09

Rachel