コード例 #1
0
 /// <summary>
 /// 重置排序条
 /// </summary>
 private void ResetSortBars()
 {
     (GetView() as SortingCanvasView).Dispatcher.Invoke(DispatcherPriority.Normal, new System.Windows.Forms.MethodInvoker(delegate()
     {
         SortBarControls.Apply(x => x.InnerHeight = -1);
     }));
 }
コード例 #2
0
        /// <summary>
        /// 初始化画布。
        /// </summary>
        public void InitCanvas(IList <int> data)
        {
            ResetIndexList(data.Count);
            //上左右留边距20
            _sortBarHeight = ((GetView() as SortingCanvasView).ActualHeight - 20);
            _sortBarWidth  = ((GetView() as SortingCanvasView).ActualWidth - 40 - data.Count()) / data.Count();

            var minvalue = data.Min();
            //高度增量(data每增加1),最小高度30,上边距20,去掉50
            var delta = (_sortBarHeight - 50) / (data.Max() - minvalue);

            //如果已有同样数量的控件,不再次生成(在Clear动画执行时需要重新生成)
            if (SortBarControls.Count == data.Count && !_clearHandle)
            {
                for (var i = 0; i < data.Count(); i++)
                {
                    SortBarControls[i].InnerHeight = GetInnerHeight(data[i], delta, minvalue);
                    SortBarControls[i].Content     = data[i];
                    SortBarControls[i].ToolTip     = data[i];
                    SortBarControls[i].Left        = 20 + i * (_sortBarWidth + 1);
                }
            }
            else
            {
                SortBarControls.Clear();
                for (var i = 0; i < data.Count(); i++)
                {
                    var bar = new SortBar()
                    {
                        Height      = _sortBarHeight,
                        Width       = _sortBarWidth,
                        Left        = 20 + i * (_sortBarWidth + 1),
                        Content     = data[i],
                        InnerHeight = GetInnerHeight(data[i], delta, minvalue),
                        Index       = i,
                        ToolTip     = data[i],
                    };

                    bar.DeleteThis += delegate
                    {
                        SortBarControls.Remove(bar);
                    };
                    SortBarControls.Add(bar);
                }
            }

            IndicatorControls = new ObservableCollection <SortBar>()
            {
                new SortBar()
                {
                    Height                   = _sortBarHeight + 20,
                    Width                    = _sortBarWidth,
                    BorderThickness          = new System.Windows.Thickness(1),
                    BorderBrush              = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#FF5D8CD0")),
                    Foreground               = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#FF5D8CD0")),
                    Left                     = -1 * _sortBarWidth,
                    Content                  = "A",
                    VerticalContentAlignment = System.Windows.VerticalAlignment.Top,
                },
                new SortBar()
                {
                    Height                   = _sortBarHeight + 20,
                    Width                    = _sortBarWidth,
                    BorderThickness          = new System.Windows.Thickness(1),
                    BorderBrush              = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#FFE28153")),
                    Foreground               = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#FFE28153")),
                    Left                     = -1 * _sortBarWidth,
                    Content                  = "B",
                    VerticalContentAlignment = System.Windows.VerticalAlignment.Top,
                },
            };
        }