using PDF_Master.Views.HomePanel.RecentFiles;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Media;
namespace PDF_Master.Views.HomePanel
{
///
/// HomeGuidContent.xaml 的交互逻辑
///
public partial class HomeGuidContent : UserControl
{
public HomeGuidContent()
{
InitializeComponent();
}
private void ScrollViewer_PreviewMouseWheel(object sender, MouseWheelEventArgs e)
{
e.Handled = true;
var eventArg = new MouseWheelEventArgs(e.MouseDevice, e.Timestamp, e.Delta)
{
RoutedEvent = UIElement.MouseWheelEvent,
Source = sender
};
var listView = FindChild(sender as DependencyObject);
listView.RaiseEvent(eventArg);
}
private static T FindChild(DependencyObject parent) where T : DependencyObject
{
if (parent == null) return null;
var foundChild = default(T);
var childCount = VisualTreeHelper.GetChildrenCount(parent);
for (var i = 0; i < childCount; i++)
{
var child = VisualTreeHelper.GetChild(parent, i);
if (child is T t)
{
foundChild = t;
break;
}
foundChild = FindChild(child);
if (foundChild != null) break;
}
return foundChild;
}
private void Recentlist_MouseDown(object sender, MouseButtonEventArgs e)
{
//Windows:最近文件列表补充点击空白处取消选中;移除Esc取消选中逻辑
if (sender is RecentFilesContent recentFilesContent)
{
if (recentFilesContent.GridRecentFilesList.Visibility == Visibility.Visible)
{
var point = e.GetPosition(recentFilesContent.GridRecentFilesList);
var result = VisualTreeHelper.HitTest(recentFilesContent.GridRecentFilesList, point);
if (result != null)
{
if (recentFilesContent.GridRecentFilesList.SelectedIndex != -1)
{
recentFilesContent.GridRecentFilesList.SelectedIndex = -1;
}
}
}
else if (recentFilesContent.RecentFilesList.Visibility == Visibility.Visible)
{
var point = e.GetPosition(recentFilesContent.RecentFilesList);
var result = VisualTreeHelper.HitTest(recentFilesContent.RecentFilesList, point);
if (result != null)
{
if (recentFilesContent.RecentFilesList.SelectedIndex != -1)
{
recentFilesContent.RecentFilesList.SelectedIndex = -1;
}
}
}
}
}
}
}