从MouseEnter获取GridViewColumn项

时间:2017-10-26 09:26:20

标签: wpf listview data-binding

我有ListViewGridViewColumn

<GridViewColumn Header="Name">
    <GridViewColumn.CellTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal"
                        MouseEnter="StackPanel_MouseEnter">
                <CheckBox  Checked="CheckBox_Checked"
                           Unchecked="CheckBox_Unchecked">
                    <CheckBox.IsChecked>
                        <Binding Path="IsSelected" RelativeSource="{RelativeSource AncestorType={x:Type ListViewItem}}"/>
                    </CheckBox.IsChecked>
                </CheckBox>
                <TextBlock x:Name="textBlock"
                           Text="{Binding Name}"/>
            </StackPanel>
        </DataTemplate>
    </GridViewColumn.CellTemplate>
</GridViewColumn>

因此,您可以看到我添加了StackPanel MouseEnter事件:

private void StackPanel_MouseEnter(object sender, MouseEventArgs e)
{

}

所以我的问题在于这个StackPanel_MouseEnter函数:如何获取此GridViewColumn内的当前对象? (甚至是我ListView的当前索引)

1 个答案:

答案 0 :(得分:1)

您可以通过访问堆栈面板的Name获取此行绑定的当前项(例如,TextBlock绑定DataContext的项目):< / p>

private void StackPanel_MouseEnter(object sender, MouseEventArgs e) {
    var item = ((FrameworkElement)sender).DataContext as YourItem;
    if (item != null) {
        // do stuff   
    }            
}