diff --git a/Wox/Images/menu.png b/Wox/Images/menu.png
deleted file mode 100644
index d7395f4d9f..0000000000
Binary files a/Wox/Images/menu.png and /dev/null differ
diff --git a/Wox/ResultPanel.xaml b/Wox/ResultPanel.xaml
index a3ada3cd38..f221205206 100644
--- a/Wox/ResultPanel.xaml
+++ b/Wox/ResultPanel.xaml
@@ -24,7 +24,7 @@
-
+
@@ -36,13 +36,12 @@
-
+
-
diff --git a/Wox/ResultPanel.xaml.cs b/Wox/ResultPanel.xaml.cs
index 341c08e127..c52367f69c 100644
--- a/Wox/ResultPanel.xaml.cs
+++ b/Wox/ResultPanel.xaml.cs
@@ -130,21 +130,58 @@ namespace Wox
public List GetVisibleResults()
{
- var theStackPanel = GetInnerStackPanel(lbResults);
List visibleElements = new List();
-
- for (int i = 0; i < theStackPanel.Children.Count; i++)
+ VirtualizingStackPanel virtualizingStackPanel = GetInnerStackPanel(lbResults);
+ for (int i = (int)virtualizingStackPanel.VerticalOffset; i <= virtualizingStackPanel.VerticalOffset + virtualizingStackPanel.ViewportHeight; i++)
{
-
- if (i >= theStackPanel.VerticalOffset && i <= theStackPanel.VerticalOffset + theStackPanel.ViewportHeight)
+ ListBoxItem item = lbResults.ItemContainerGenerator.ContainerFromIndex(i) as ListBoxItem;
+ if (item != null)
{
- FrameworkElement element = theStackPanel.Children[i] as FrameworkElement;
- visibleElements.Add(element.DataContext as Result);
+ visibleElements.Add(item.DataContext as Result);
}
}
return visibleElements;
}
+ private void UpdateItemNumber()
+ {
+ VirtualizingStackPanel virtualizingStackPanel = GetInnerStackPanel(lbResults);
+ int index = 0;
+ for (int i = (int)virtualizingStackPanel.VerticalOffset; i <= virtualizingStackPanel.VerticalOffset + virtualizingStackPanel.ViewportHeight; i++)
+ {
+ index++;
+ ListBoxItem item = lbResults.ItemContainerGenerator.ContainerFromIndex(i) as ListBoxItem;
+ if (item != null)
+ {
+ ContentPresenter myContentPresenter = FindVisualChild(item);
+ if (myContentPresenter != null)
+ {
+ DataTemplate dataTemplate = myContentPresenter.ContentTemplate;
+ TextBlock tbItemNumber = (TextBlock)dataTemplate.FindName("tbItemNumber", myContentPresenter);
+ tbItemNumber.Text = index.ToString();
+ }
+ }
+ }
+ }
+
+
+ private childItem FindVisualChild(DependencyObject obj) where childItem : DependencyObject
+ {
+ for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++)
+ {
+ DependencyObject child = VisualTreeHelper.GetChild(obj, i);
+ if (child != null && child is childItem)
+ return (childItem)child;
+ else
+ {
+ childItem childOfChild = FindVisualChild(child);
+ if (childOfChild != null)
+ return childOfChild;
+ }
+ }
+ return null;
+ }
+
private VirtualizingStackPanel GetInnerStackPanel(FrameworkElement element)
{
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(element); i++)
@@ -189,6 +226,10 @@ namespace Wox
if (e.AddedItems.Count > 0 && e.AddedItems[0] != null)
{
lbResults.ScrollIntoView(e.AddedItems[0]);
+ Dispatcher.DelayInvoke("UpdateItemNumber", o =>
+ {
+ UpdateItemNumber();
+ }, TimeSpan.FromMilliseconds(3));
}
}
diff --git a/Wox/Themes/Base.xaml b/Wox/Themes/Base.xaml
index afaf5bb9ad..39866e052c 100644
--- a/Wox/Themes/Base.xaml
+++ b/Wox/Themes/Base.xaml
@@ -38,6 +38,12 @@
+
+
diff --git a/Wox/Wox.csproj b/Wox/Wox.csproj
index 90937cd006..0a3a843e2e 100644
--- a/Wox/Wox.csproj
+++ b/Wox/Wox.csproj
@@ -334,9 +334,6 @@
PreserveNewest
-
- PreserveNewest
-
PreserveNewest