WPF如何使listbox / listview不可聚焦

时间:2011-03-21 12:18:55

标签: wpf listview listbox focusable

我一直试图在listbox / listview中显示一些无法聚焦的数据(我的意思不仅是列表,还包括其中的项目)。

我尝试了两种类型的列表(listbox和listview),我使用了他们的ItemTemplate和ItemContainerStyle。无论我在哪里,我都将Focusable属性设置为false。

我没有看到除禁用列表之外的任何其他方式,但我必须更改其所有样式,以使其显示为未禁用。

我错过了什么吗?是否有我不知道的只读类型的列表?

感谢您的想法:)

2 个答案:

答案 0 :(得分:12)

您可能会遇到的问题是列表中的每个项目都是可调焦的。但是,您可以覆盖...尝试将其添加到列表框中:

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

但请注意,这会使项目无法选择(通过键盘或鼠标)。您可以以编程方式设置所选项目,但它似乎不再自动突出显示 - 所以实际上,这与ItemsControl几乎相同。

答案 1 :(得分:3)

使用带有TextBlocks而不是ListBox的ItemsControl

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