InkCanvasForClass/Ink Canvas/MainWindow_cs/MW_PageListView.cs

98 lines
3.8 KiB
C#

using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Forms;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using Ink_Canvas.Helpers;
namespace Ink_Canvas
{
public partial class MainWindow : Window
{
private class PageListViewItem
{
public int Index { get; set; }
public StrokeCollection Strokes { get; set; }
}
ObservableCollection<PageListViewItem> blackBoardLeftSidePageListViewObservableCollection = new ObservableCollection<PageListViewItem>();
/// <summary>
/// <para>刷新白板的缩略图页面列表。</para>
/// </summary>
private void RefreshBlackBoardLeftSidePageListView()
{
if (blackBoardLeftSidePageListViewObservableCollection.Count == WhiteboardTotalCount) {
foreach (int index in Enumerable.Range(1, WhiteboardTotalCount))
{
var st = ApplyHistoriesToNewStrokeCollection(TimeMachineHistories[index]);
st.Clip(new Rect(0, 0, (int)inkCanvas.ActualWidth, (int)inkCanvas.ActualHeight));
var pitem = new PageListViewItem()
{
Index = index,
Strokes = st,
};
blackBoardLeftSidePageListViewObservableCollection[index-1] = pitem;
}
} else {
blackBoardLeftSidePageListViewObservableCollection.Clear();
foreach (int index in Enumerable.Range(1, WhiteboardTotalCount)) {
var st = ApplyHistoriesToNewStrokeCollection(TimeMachineHistories[index]);
st.Clip(new Rect(0,0, (int)inkCanvas.ActualWidth, (int)inkCanvas.ActualHeight));
var pitem = new PageListViewItem()
{
Index = index,
Strokes = st,
};
blackBoardLeftSidePageListViewObservableCollection.Add(pitem);
}
}
var _st = inkCanvas.Strokes.Clone();
_st.Clip(new Rect(0, 0, (int)inkCanvas.ActualWidth, (int)inkCanvas.ActualHeight));
var _pitem = new PageListViewItem()
{
Index = CurrentWhiteboardIndex,
Strokes = _st,
};
blackBoardLeftSidePageListViewObservableCollection[CurrentWhiteboardIndex - 1] = _pitem;
BlackBoardLeftSidePageListView.SelectedIndex = CurrentWhiteboardIndex -1;
}
public static void ScrollViewToVerticalTop(FrameworkElement element, ScrollViewer scrollViewer)
{
var scrollViewerOffset = scrollViewer.VerticalOffset;
var point = new Point(0, scrollViewerOffset);
var tarPos = element.TransformToVisual(scrollViewer).Transform(point);
scrollViewer.ScrollToVerticalOffset(tarPos.Y);
}
private void BlackBoardLeftSidePageListView_OnMouseUp(object sender, MouseButtonEventArgs e) {
AnimationsHelper.HideWithSlideAndFade(BoardBorderLeftPageListView);
var item = BlackBoardLeftSidePageListView.SelectedItem;
var index = BlackBoardLeftSidePageListView.SelectedIndex;
if (item != null)
{
SaveStrokes();
ClearStrokes(true);
CurrentWhiteboardIndex= index+1;
RestoreStrokes();
UpdateIndexInfoDisplay();
BlackBoardLeftSidePageListView.SelectedIndex = index;
}
}
}
}