【问题标题】:Disable ListView selection and hover禁用 ListView 选择和悬停
【发布时间】:2019-01-04 12:49:13
【问题描述】:

通常我可以禁用 ListView 选择,就像 this 线程建议的那样 - 或者您设置 ItemContainerStyle 的类似操作。

但是我有这样定义的 ListView:

<ScrollViewer>
    <ListView  ItemsSource="{Binding List, Mode=OneWay}">
        <ListView.View>
            <GridView>
                <GridViewColumn>
                    <GridViewColumnHeader Style="{StaticResource header}"/>
                        <GridViewColumn.CellTemplate>
                            <DataTemplate>
                                <!-- Some data -->
                            </DataTemplate>
                        </GridViewColumn.CellTemplate>
                    </GridViewColumn>
                </GridViewColumn>
                ...
            </GridView> 
        </ListView.View>    
    </ListView> 
</ScrollViewer> 

如果我尝试指定 ItemContainerStyle - 列表中的数据就会消失。

鉴于上述 ListView,我将如何继续删除选择?

【问题讨论】:

  • 如果只有一列,而且列表不应该是可选的,为什么不直接使用 ItemsControl?
  • 在上面的例子中我的错,有不止一列。但是你可能是对的,一个简单的 ItemsControl 会更简单/更好,因为没有什么可供选择的。这只是一个信息列表..我会尝试...

标签: wpf listview itemcontainerstyle


【解决方案1】:

你能试试这个ItemContainerStyle吗?这基本上不会拾取任何输入事件。

<ListView ItemsSource="{Binding List, Mode=OneWay}">
    <ListView.ItemContainerStyle>
        <Style TargetType="ListBoxItem" BasedOn="{StaticResource {x:Type ListViewItem}}">
            <Setter Property="IsHitTestVisible" Value="False"/>
        </Style>
    </ListView.ItemContainerStyle>
</ListView>

【讨论】:

  • 是的,这确实有效。它禁用了所有继承的样式,但我可以轻松地重新创建它。谢谢。
  • @Werner,我明白了。您可以使用 BasedOn 属性继承样式。设置BasedOn="{StaticResource {x:Type ListViewItem}}"
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多