【问题标题】:WPF Get MouseHover Event from dynamic set ListViewItemWPF 从动态集 ListViewItem 中获取 MouseHover 事件
【发布时间】:2019-01-12 02:42:38
【问题描述】:

如何从动态集ListViewItems 中获取MouseOver 事件?

XAML:

<ListView Name="ListView" x:FieldModifier="public" ItemsSource="{Binding FileDataList}" Grid.Row="3" Grid.Column="3" Grid.ColumnSpan="8" Grid.RowSpan="12">       
    <ListView.View>
        <GridView>
            <GridViewColumn Header="Filename" DisplayMemberBinding="{Binding Name}" Width="Auto"/>
            <GridViewColumn Header="Change date" DisplayMemberBinding="{Binding Date}" Width="Auto"/>
            <GridViewColumn Header="Type" DisplayMemberBinding="{Binding Type}" Width="Auto"/>
            <GridViewColumn Header="Size" DisplayMemberBinding="{Binding Size}" Width="Auto"/>
        </GridView>
    </ListView.View>            
</ListView>

后面的代码:

fileDataList.Add(new FileData() { Name = System.IO.Path.GetFileNameWithoutExtension(filename), Date = File.GetLastWriteTime(filename), Type = System.IO.Path.GetExtension(filename), Size = GetFileSize(filename) });

这是列表:

public List<string> files = new List<string>();
private ObservableCollection<FileData> fileDataList = new ObservableCollection<FileData>();

【问题讨论】:

  • 请写下,你想在 MouseOver 事件中做什么...
  • 我想显示一个显示文件预览的窗口,鼠标在 ListView 中的位置。

标签: c# wpf xaml events mouseover


【解决方案1】:

ListView的资源中设置如下样式:

 <ListView.Resources>
       <Style TargetType="ListViewItem">
          <EventSetter Event="MouseEnter" Handler="ListViewItem_MouseEnter" />
          <EventSetter Event="MouseLeave" Handler="ListViewItem_MouseLeave" />
       </Style>
 </ListView.Resources>

在后面的代码中使用以下代码来确定当前悬停的项目。

private ListViewItem _currentItem = null;
private void ListViewItem_MouseEnter(object sender, System.Windows.Input.MouseEventArgs e)
{
    var item = sender as ListViewItem;
    if (!Equals(_currentItem, item))
    {
        _currentItem = item;

        // code to update window 
    }
}

private void ListViewItem_MouseLeave(object sender, System.Windows.Input.MouseEventArgs e)
{
    _currentItem = null;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-02
    • 2012-09-15
    • 1970-01-01
    • 2011-07-24
    • 1970-01-01
    相关资源
    最近更新 更多