代码之家  ›  专栏  ›  技术社区  ›  RandomEngy

鼠标悬停在带有数据绑定(WPF)的ListBox项上

  •  1
  • RandomEngy  · 技术社区  · 15 年前

    我有一个数据绑定列表框。当用户单击其中一个ListBoxItem时,我需要触发一个事件,但我不太清楚该如何做。我尝试在listbox.itemtemplate上放置一个网格,并将mousedown事件放在上面:

    <ListBox
        Name="popupListBox">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <Grid MouseDown="Grid_MouseDown" Background="Aquamarine">
                    <TextBlock Text="{Binding Path=TagText}" />
                </Grid>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
    

    然而,网格通常小于实际的ListBoxItem。我不知道当它的任何一部分被点击时如何让它着火。

    我试过查看列表框中的SelectionChanged事件,但当您单击当前选定的项目时,它不会触发。

    我还尝试过编辑ListBoxItem的样式,但是我不知道如何正确地将mousedown事件应用于它;我总是会遇到语法错误。

    1 回复  |  直到 15 年前
        1
  •  0
  •   Oren Trutner    15 年前

    您可以添加一个itemcontainerStyle来拉伸数据模板以填充可用的水平空间。现在,在单击该项的任何位置,都会触发鼠标悬停事件。

    <ListBox Name="popupListBox">
        <ListBox.ItemContainerStyle>
            <Style TargetType="{x:Type ListBoxItem}">
                <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
            </Style>
        </ListBox.ItemContainerStyle>
    
        <ListBox.ItemTemplate>
            <DataTemplate>
                <Grid MouseDown="Grid_MouseDown" Background="Aquamarine">
                    <TextBlock Text="{Binding Path=tagText}" />
                </Grid>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>