【问题标题】:ListBox ItemTemplate Hit Test列表框项模板命中测试
【发布时间】:2012-08-23 20:45:48
【问题描述】:

我有以下带有 ItemTemplate 的 ListBox

<ListBox SelectionMode="Multiple" ItemsSource="{Binding MyItems}" DisplayMemberPath="Name">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <Grid VerticalAlignment="Stretch" Height="{Binding ActualHeight, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}">
                <ContentControl VerticalAlignment="Center" VerticalContentAlignment="Center" Content="{Binding}" />
            </Grid>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

这显示一切都很好,但是 ContentControl 上的命中测试不正确...如果我单击“实际”内容的上方或下方(如果项目的高度比 ContentControl 高,则该项目是'未选中。

如果我将 ControlControl VerticalAlignment 更改为 Stretch,则可以解决问题并且所有点击都会正确突出显示项目...但是我的内容在每个项目中都是顶部对齐的...

我怎样才能正确选择项目?

【问题讨论】:

    标签: wpf mvvm


    【解决方案1】:

    Grid 命中测试为例

    <Grid Background="Transparent" ...>
    

    【讨论】:

    • bingo....我已经尝试过设置 IsHitTestVisible="True",但这不起作用...知道为什么吗?
    • 据我所知,该属性只是一个覆盖,这意味着如果您将其设置为 false 并且有“某事”,它将忽略该某事,但是如果没有什么可以开始然后将它放在true(默认)上不会做任何事情。通过拥有背景,您可以创建“一些东西”来进行命中测试。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多