提交记录新增UI/Base/UIHelper.cs+34 −0看文件
修改UI/Controls/Charts/Charts.cs+191 −68看文件
修改UI/Controls/Charts/Model/ChartColumnInfoModel.cs+1 −1看文件
修改UI/Resources/Themes/Dark/Charts/Charts.xaml+2 −14看文件
修改UI/Resources/Themes/Light/Charts/Charts.xaml+2 −13看文件
修改UI/UI.csproj+1 −0看文件
| @@ -0,0 +1,34 @@ | ||
| 1 | 新增:using System; | |
| 2 | 新增:using System.Collections.Generic; | |
| 3 | 新增:using System.Globalization; | |
| 4 | 新增:using System.Linq; | |
| 5 | 新增:using System.Text; | |
| 6 | 新增:using System.Threading.Tasks; | |
| 7 | 新增:using System.Windows; | |
| 8 | 新增:using System.Windows.Controls; | |
| 9 | 新增:using System.Windows.Media; | |
| 10 | 新增: | |
| 11 | 新增:namespace UI.Base | |
| 12 | 新增:{ | |
| 13 | 新增: public static class UIHelper | |
| 14 | 新增: { | |
| 15 | 新增: /// <summary> | |
| 16 | 新增: /// 测量字符串控件尺寸 | |
| 17 | 新增: /// </summary> | |
| 18 | 新增: /// <param name="textBlock"></param> | |
| 19 | 新增: /// <returns></returns> | |
| 20 | 新增: public static Size MeasureString(TextBlock textBlock) | |
| 21 | 新增: { | |
| 22 | 新增: var formattedText = new FormattedText( | |
| 23 | 新增: textBlock.Text, | |
| 24 | 新增: CultureInfo.CurrentCulture, | |
| 25 | 新增: FlowDirection.LeftToRight, | |
| 26 | 新增: new Typeface(textBlock.FontFamily, textBlock.FontStyle, textBlock.FontWeight, textBlock.FontStretch), | |
| 27 | 新增: textBlock.FontSize, | |
| 28 | 新增: Brushes.Black, | |
| 29 | 新增: new NumberSubstitution()); | |
| 30 | 新增: | |
| 31 | 新增: return new Size(formattedText.Width, formattedText.Height); | |
| 32 | 新增: } | |
| 33 | 新增: } | |
| 34 | 新增:} | |
| @@ -16,6 +16,7 @@ using System.Windows.Media.Imaging; | ||
| 16 | 16 | using System.Windows.Navigation; |
| 17 | 17 | using System.Windows.Shapes; |
| 18 | 18 | using System.Windows.Threading; |
| 19 | 新增:using UI.Base; | |
| 19 | 20 | using UI.Controls.Base; |
| 20 | 21 | using UI.Controls.Charts.Model; |
| 21 | 22 | using UI.Controls.Input; |
| @@ -475,7 +476,7 @@ namespace UI.Controls.Charts | ||
| 475 | 476 | } |
| 476 | 477 | if (e.Property == ColumnSelectedIndexProperty && e.OldValue != e.NewValue) |
| 477 | 478 | { |
| 478 | 删除: charts.CheckColumnItem((int)e.OldValue, (int)e.NewValue); | |
| 479 | 新增: charts.SetColBorderActiveBg((int)e.OldValue, (int)e.NewValue); | |
| 479 | 480 | } |
| 480 | 481 | |
| 481 | 482 | } |
| @@ -502,9 +503,12 @@ namespace UI.Controls.Charts | ||
| 502 | 503 | private StackPanel _typeATempContainer; |
| 503 | 504 | private WrapPanel CardContainer; |
| 504 | 505 | private Grid MonthContainer; |
| 505 | 删除: private Grid ColumnContainer; | |
| 506 | 506 | private Border RadarContainer; |
| 507 | 507 | private ListView _listView; |
| 508 | 新增: private Canvas _typeColumnCanvas; | |
| 509 | 新增: | |
| 510 | 新增: private Dictionary<int, List<Rectangle>> _typeColValueRectMap; | |
| 511 | 新增: private Dictionary<int, Rectangle> _typeColBorderRectMap; | |
| 508 | 512 | /// <summary> |
| 509 | 513 | /// 是否在渲染中 |
| 510 | 514 | /// </summary> |
| @@ -522,7 +526,7 @@ namespace UI.Controls.Charts | ||
| 522 | 526 | { |
| 523 | 527 | DefaultStyleKey = typeof(Charts); |
| 524 | 528 | |
| 525 | 删除: | |
| 529 | 新增: | |
| 526 | 530 | SizeChanged += Charts_SizeChanged; |
| 527 | 531 | Unloaded += Charts_Unloaded; |
| 528 | 532 | } |
| @@ -547,10 +551,14 @@ namespace UI.Controls.Charts | ||
| 547 | 551 | base.OnApplyTemplate(); |
| 548 | 552 | CardContainer = GetTemplateChild("CardContainer") as WrapPanel; |
| 549 | 553 | MonthContainer = GetTemplateChild("MonthContainer") as Grid; |
| 550 | 删除: ColumnContainer = GetTemplateChild("ColumnContainer") as Grid; | |
| 551 | 554 | RadarContainer = GetTemplateChild("Radar") as Border; |
| 552 | 555 | _listView = GetTemplateChild("ListView") as ListView; |
| 553 | 556 | _typeATempContainer = GetTemplateChild("TypeATempContainer") as StackPanel; |
| 557 | 新增: if (ChartsType == ChartsType.Column) | |
| 558 | 新增: { | |
| 559 | 新增: _typeColumnCanvas = GetTemplateChild("TypeColumnCanvas") as Canvas; | |
| 560 | 新增: _typeColumnCanvas.SizeChanged += _typeColumnCanvas_SizeChanged; | |
| 561 | 新增: } | |
| 554 | 562 | |
| 555 | 563 | UpdateListViewHeight(); |
| 556 | 564 | |
| @@ -572,6 +580,11 @@ namespace UI.Controls.Charts | ||
| 572 | 580 | page.SizeChanged += Page_SizeChanged; |
| 573 | 581 | } |
| 574 | 582 | |
| 583 | 新增: private void _typeColumnCanvas_SizeChanged(object sender, SizeChangedEventArgs e) | |
| 584 | 新增: { | |
| 585 | 新增: RenderColumnStyle(); | |
| 586 | 新增: } | |
| 587 | 新增: | |
| 575 | 588 | private void Page_SizeChanged(object sender, SizeChangedEventArgs e) |
| 576 | 589 | { |
| 577 | 590 | _listView.Height = 1; |
| @@ -634,7 +647,7 @@ namespace UI.Controls.Charts | ||
| 634 | 647 | |
| 635 | 648 | private void Render() |
| 636 | 649 | { |
| 637 | 删除: if (isRendering || CardContainer == null || ColumnContainer == null) | |
| 650 | 新增: if (isRendering || CardContainer == null) | |
| 638 | 651 | { |
| 639 | 652 | return; |
| 640 | 653 | } |
| @@ -643,7 +656,6 @@ namespace UI.Controls.Charts | ||
| 643 | 656 | Calculate(); |
| 644 | 657 | CardContainer.Children.Clear(); |
| 645 | 658 | MonthContainer.Children.Clear(); |
| 646 | 删除: ColumnContainer.Children.Clear(); | |
| 647 | 659 | _typeATempContainer.Children.Clear(); |
| 648 | 660 | |
| 649 | 661 | RadarContainer.Child = null; |
| @@ -662,11 +674,7 @@ namespace UI.Controls.Charts | ||
| 662 | 674 | { |
| 663 | 675 | IsEmpty = false; |
| 664 | 676 | } |
| 665 | 删除: ListViewBindingData = Data.OrderByDescending(x => x.Value).ToList(); | |
| 666 | 删除: if (ShowLimit > 0) | |
| 667 | 删除: { | |
| 668 | 删除: ListViewBindingData = ListViewBindingData.Take(ShowLimit); | |
| 669 | 删除: } | |
| 677 | 新增: | |
| 670 | 678 | isRendering = true; |
| 671 | 679 | switch (ChartsType) |
| 672 | 680 | { |
| @@ -702,6 +710,12 @@ namespace UI.Controls.Charts | ||
| 702 | 710 | } |
| 703 | 711 | private void RenderHorizontalAStyle() |
| 704 | 712 | { |
| 713 | 新增: ListViewBindingData = Data.OrderByDescending(x => x.Value).ToList(); | |
| 714 | 新增: if (ShowLimit > 0) | |
| 715 | 新增: { | |
| 716 | 新增: ListViewBindingData = ListViewBindingData.Take(ShowLimit); | |
| 717 | 新增: } | |
| 718 | 新增: | |
| 705 | 719 | isRendering = false; |
| 706 | 720 | var searchBox = GetTemplateChild("ASearchBox") as InputBox; |
| 707 | 721 | searchBox.TextChanged += SearchBox_TextChanged; |
| @@ -1026,24 +1040,24 @@ namespace UI.Controls.Charts | ||
| 1026 | 1040 | #endregion |
| 1027 | 1041 | |
| 1028 | 1042 | #region 渲染柱形图 |
| 1029 | 删除: private void CheckColumnItem(int oldIndex, int newIndex) | |
| 1043 | 新增: private void SetColBorderActiveBg(int oldIndex, int newIndex) | |
| 1030 | 1044 | { |
| 1031 | 删除: if (!IsCanColumnSelect || ColumnContainer.Children.Count == 0) | |
| 1045 | 新增: if (!IsCanColumnSelect || _typeColBorderRectMap == null) | |
| 1032 | 1046 | { |
| 1033 | 1047 | return; |
| 1034 | 1048 | } |
| 1035 | 1049 | |
| 1036 | 删除: if (oldIndex >= 0 && oldIndex < ColumnContainer.Children.Count) | |
| 1050 | 新增: if (_typeColBorderRectMap.ContainsKey(oldIndex)) | |
| 1037 | 1051 | { |
| 1038 | 删除: var oldItem = ColumnContainer.Children[oldIndex] as Grid; | |
| 1039 | 删除: oldItem.Background = new SolidColorBrush(Colors.Transparent); | |
| 1052 | 新增: var oldItem = _typeColBorderRectMap[oldIndex]; | |
| 1053 | 新增: oldItem.Fill = new SolidColorBrush(Colors.Transparent); | |
| 1040 | 1054 | } |
| 1041 | 删除: if (newIndex >= 0 && newIndex < ColumnContainer.Children.Count) | |
| 1055 | 新增: if (_typeColBorderRectMap.ContainsKey(newIndex)) | |
| 1042 | 1056 | { |
| 1043 | 1057 | var background = Application.Current.Resources["ThemeBrush"] as SolidColorBrush; |
| 1044 | 1058 | |
| 1045 | 删除: var checkItem = ColumnContainer.Children[newIndex] as Grid; | |
| 1046 | 删除: checkItem.Background = new SolidColorBrush(background.Color) { Opacity = .1 }; | |
| 1059 | 新增: var checkItem = _typeColBorderRectMap[newIndex]; | |
| 1060 | 新增: checkItem.Fill = new SolidColorBrush(background.Color) { Opacity = .1 }; | |
| 1047 | 1061 | } |
| 1048 | 1062 | } |
| 1049 | 1063 | /// <summary> |
| @@ -1051,11 +1065,17 @@ namespace UI.Controls.Charts | ||
| 1051 | 1065 | /// </summary> |
| 1052 | 1066 | private void RenderColumnStyle() |
| 1053 | 1067 | { |
| 1054 | 删除: ColumnContainer.Children.Clear(); | |
| 1055 | 删除: ColumnInfoList = new List<ChartColumnInfoModel>(); | |
| 1056 | 删除: ColumnContainer.ColumnDefinitions.Clear(); | |
| 1057 | 删除: maxValue = 0; | |
| 1068 | 新增: if (_typeColumnCanvas == null || _typeColumnCanvas.ActualHeight == 0) | |
| 1069 | 新增: { | |
| 1070 | 新增: return; | |
| 1071 | 新增: } | |
| 1072 | 新增: | |
| 1073 | 新增: _typeColumnCanvas.Children.Clear(); | |
| 1074 | 新增: ColumnInfoList = null; | |
| 1075 | 新增: _typeColValueRectMap = new Dictionary<int, List<Rectangle>>(); | |
| 1076 | 新增: _typeColBorderRectMap = new Dictionary<int, Rectangle>(); | |
| 1058 | 1077 | |
| 1078 | 新增: maxValue = 0; | |
| 1059 | 1079 | Maximum = string.Empty; |
| 1060 | 1080 | Median = string.Empty; |
| 1061 | 1081 | Total = string.Empty; |
| @@ -1066,8 +1086,6 @@ namespace UI.Controls.Charts | ||
| 1066 | 1086 | } |
| 1067 | 1087 | |
| 1068 | 1088 | |
| 1069 | 删除: | |
| 1070 | 删除: | |
| 1071 | 1089 | double total = 0; |
| 1072 | 1090 | // 查找最大值 |
| 1073 | 1091 | foreach (var item in Data) |
| @@ -1089,20 +1107,16 @@ namespace UI.Controls.Charts | ||
| 1089 | 1107 | } |
| 1090 | 1108 | |
| 1091 | 1109 | Maximum = Covervalue(maxValue); |
| 1092 | 删除: | |
| 1093 | 1110 | Median = Covervalue((maxValue / 2)); |
| 1094 | 删除: | |
| 1095 | 1111 | Total = Covervalue(total); |
| 1096 | 1112 | |
| 1097 | 删除: int margin = 5; | |
| 1098 | 删除: | |
| 1099 | 删除: | |
| 1100 | 删除: | |
| 1101 | 删除: // 创建列 | |
| 1113 | 新增: // 列数 | |
| 1102 | 1114 | int columns = Data.FirstOrDefault().Values.Length; |
| 1103 | 1115 | |
| 1104 | 1116 | |
| 1105 | 删除: // 调整间距 | |
| 1117 | 新增: // 间距 | |
| 1118 | 新增: int margin = 5; | |
| 1119 | 新增: | |
| 1106 | 1120 | if (columns <= 7) |
| 1107 | 1121 | { |
| 1108 | 1122 | margin = 25; |
| @@ -1117,74 +1131,185 @@ namespace UI.Controls.Charts | ||
| 1117 | 1131 | } |
| 1118 | 1132 | |
| 1119 | 1133 | int columnCount = Data.Count(); |
| 1120 | 删除: | |
| 1121 | 1134 | var list = Data.ToList(); |
| 1122 | 1135 | |
| 1136 | 新增: // 列名高度 | |
| 1137 | 新增: const double colNameHeight = 30; | |
| 1138 | 新增: // 列名下边距 | |
| 1139 | 新增: const double colNameBottomMargin = 5; | |
| 1140 | 新增: // 画布高度 | |
| 1141 | 新增: double canvasHeight = _typeColumnCanvas.ActualHeight - colNameHeight - colNameBottomMargin; | |
| 1142 | 新增: // 画布宽度 | |
| 1143 | 新增: double canvasWidth = _typeColumnCanvas.ActualWidth; | |
| 1144 | 新增: // 边框宽度 | |
| 1145 | 新增: double columnBorderWidth = _typeColumnCanvas.ActualWidth / columns; | |
| 1146 | 新增: // 列值宽度 | |
| 1147 | 新增: double colValueRectWidth = _typeColumnCanvas.ActualWidth / columns - (margin * 2); | |
| 1148 | 新增: | |
| 1123 | 1149 | for (int i = 0; i < columns; i++) |
| 1124 | 1150 | { |
| 1125 | 删除: ColumnContainer.ColumnDefinitions.Add(new ColumnDefinition() | |
| 1126 | 删除: { | |
| 1127 | 删除: Width = new GridLength(1, GridUnitType.Star) | |
| 1128 | 删除: }); | |
| 1151 | 新增: // 绘制列边框 | |
| 1152 | 新增: var columnBorder = new Rectangle(); | |
| 1153 | 新增: columnBorder.Width = columnBorderWidth; | |
| 1154 | 新增: columnBorder.Height = canvasHeight; | |
| 1155 | 新增: columnBorder.Fill = new SolidColorBrush(Colors.Transparent); | |
| 1156 | 新增: Canvas.SetLeft(columnBorder, i * columnBorderWidth); | |
| 1157 | 新增: Canvas.SetTop(columnBorder, colNameBottomMargin); | |
| 1158 | 新增: Panel.SetZIndex(columnBorder, 999); | |
| 1159 | 新增: _typeColumnCanvas.Children.Add(columnBorder); | |
| 1160 | 新增: _typeColBorderRectMap.Add(i, columnBorder); | |
| 1161 | 新增: | |
| 1162 | 新增: // 列名 | |
| 1163 | 新增: string colName = list[0].ColumnNames != null && list[0].ColumnNames.Length > 0 ? list[0].ColumnNames[i] : (i + NameIndexStart).ToString(); | |
| 1164 | 新增: // 绘制列名 | |
| 1165 | 新增: TextBlock colNameText = new TextBlock(); | |
| 1166 | 新增: colNameText.TextAlignment = TextAlignment.Center; | |
| 1167 | 新增: colNameText.Width = columnBorderWidth; | |
| 1168 | 新增: colNameText.FontSize = 12; | |
| 1169 | 新增: colNameText.Text = colName; | |
| 1170 | 新增: colNameText.Foreground = UI.Base.Color.Colors.GetFromString("#FF8A8A8A"); | |
| 1171 | 新增: | |
| 1172 | 新增: Canvas.SetLeft(colNameText, i * columnBorderWidth); | |
| 1173 | 新增: Canvas.SetBottom(colNameText, colNameBottomMargin); | |
| 1174 | 新增: _typeColumnCanvas.Children.Add(colNameText); | |
| 1129 | 1175 | |
| 1130 | 删除: var valueContainer = new Grid(); | |
| 1131 | 删除: | |
| 1132 | 删除: Grid.SetColumn(valueContainer, i); | |
| 1133 | 删除: ColumnContainer.Children.Add(valueContainer); | |
| 1134 | 1176 | |
| 1135 | 1177 | var valuesPopupList = new List<ChartColumnInfoModel>(); |
| 1136 | 1178 | |
| 1179 | 新增: _typeColValueRectMap.Add(i, new List<Rectangle>()); | |
| 1180 | 新增: | |
| 1137 | 1181 | for (int di = 0; di < columnCount; di++) |
| 1138 | 1182 | { |
| 1139 | 1183 | var item = list[di]; |
| 1140 | 删除: item.Color = item.Color == null ? UI.Base.Color.Colors.MainColors[di] : item.Color; | |
| 1141 | 删除: var column = new ChartItemTypeColumn(); | |
| 1142 | 删除: column.Value = item.Values[i]; | |
| 1143 | 删除: column.MaxValue = maxValue; | |
| 1144 | 删除: column.Margin = new Thickness(margin, 0, margin, 0); | |
| 1184 | 新增: string colColor = item.Color == null ? UI.Base.Color.Colors.MainColors[di] : item.Color; | |
| 1185 | 新增: double value = item.Values[i]; | |
| 1145 | 1186 | |
| 1146 | 删除: column.Color = item.Color; | |
| 1147 | 删除: column.ColumnName = item.ColumnNames != null && item.ColumnNames.Length > 0 ? item.ColumnNames[i] : (i + NameIndexStart).ToString(); | |
| 1148 | 删除: Panel.SetZIndex(column, column.Value > 0 ? -(int)column.Value : 0); | |
| 1149 | 1187 | |
| 1150 | 删除: valueContainer.Children.Add(column); | |
| 1151 | 删除: | |
| 1152 | 删除: if (column.Value > 0) | |
| 1188 | 新增: if (value > 0) | |
| 1153 | 1189 | { |
| 1190 | 新增: // 绘制列 | |
| 1191 | 新增: var colValueRect = new Rectangle(); | |
| 1192 | 新增: colValueRect.Width = colValueRectWidth; | |
| 1193 | 新增: colValueRect.Height = value / maxValue * canvasHeight; | |
| 1194 | 新增: colValueRect.Fill = UI.Base.Color.Colors.GetFromString(colColor); | |
| 1195 | 新增: colValueRect.RadiusX = 4; | |
| 1196 | 新增: colValueRect.RadiusY= 4; | |
| 1197 | 新增: Canvas.SetLeft(colValueRect, i * columnBorderWidth + margin); | |
| 1198 | 新增: Canvas.SetBottom(colValueRect, colNameHeight); | |
| 1199 | 新增: | |
| 1200 | 新增: _typeColumnCanvas.Children.Add(colValueRect); | |
| 1201 | 新增: _typeColValueRectMap[i].Add(colValueRect); | |
| 1202 | 新增: | |
| 1203 | 新增: // 列分类统计数据 | |
| 1154 | 1204 | valuesPopupList.Add(new ChartColumnInfoModel() |
| 1155 | 1205 | { |
| 1156 | 1206 | Color = item.Color, |
| 1157 | 1207 | Name = item.Name, |
| 1158 | 1208 | Icon = item.Icon, |
| 1159 | 删除: Text = Covervalue(column.Value) + Unit | |
| 1209 | 新增: Text = Covervalue(value) + Unit, | |
| 1210 | 新增: Value = value, | |
| 1160 | 1211 | }); |
| 1161 | 1212 | } |
| 1162 | 1213 | } |
| 1214 | 新增: var index = i; | |
| 1163 | 1215 | |
| 1164 | 删除: valueContainer.MouseEnter += (e, c) => | |
| 1216 | 新增: columnBorder.MouseEnter += (e, c) => | |
| 1165 | 1217 | { |
| 1166 | 删除: ColumnValuesInfoList = valuesPopupList; | |
| 1167 | 删除: ValuesPopupPlacementTarget = valueContainer; | |
| 1218 | 新增: ColumnValuesInfoList = valuesPopupList.OrderByDescending(m => m.Value).ToList(); | |
| 1219 | 新增: ValuesPopupPlacementTarget = columnBorder; | |
| 1168 | 1220 | IsShowValuesPopup = valuesPopupList.Count > 0; |
| 1169 | 1221 | |
| 1170 | 删除: ValuesPopupHorizontalOffset = -17.5 + (valueContainer.ActualWidth / 2); | |
| 1222 | 新增: ValuesPopupHorizontalOffset = -17.5 + (columnBorder.ActualWidth / 2); | |
| 1223 | 新增: | |
| 1224 | 新增: if (ColumnSelectedIndex != index) | |
| 1225 | 新增: { | |
| 1226 | 新增: var themeBrush = Application.Current.Resources["ThemeBrush"] as SolidColorBrush; | |
| 1227 | 新增: columnBorder.Fill = new SolidColorBrush(themeBrush.Color) { Opacity = .05 }; | |
| 1228 | 新增: } | |
| 1171 | 1229 | }; |
| 1172 | 删除: valueContainer.MouseLeave += (e, c) => | |
| 1230 | 新增: columnBorder.MouseLeave += (e, c) => | |
| 1173 | 1231 | { |
| 1174 | 1232 | IsShowValuesPopup = false; |
| 1175 | 删除: }; | |
| 1233 | 新增: if (ColumnSelectedIndex != index) | |
| 1234 | 新增: { | |
| 1235 | 新增: columnBorder.Fill = new SolidColorBrush(Colors.Transparent); | |
| 1176 | 1236 | |
| 1177 | 删除: var index = i; | |
| 1178 | 删除: valueContainer.MouseLeftButtonDown += (e, c) => | |
| 1179 | 删除: { | |
| 1180 | 删除: ColumnSelectedIndex = index; | |
| 1237 | 新增: } | |
| 1181 | 1238 | }; |
| 1239 | 新增: if (IsCanColumnSelect) | |
| 1240 | 新增: { | |
| 1241 | 新增: columnBorder.MouseLeftButtonDown += (e, c) => | |
| 1242 | 新增: { | |
| 1243 | 新增: ColumnSelectedIndex = index; | |
| 1244 | 新增: }; | |
| 1245 | 新增: } | |
| 1246 | 新增: } | |
| 1247 | 新增: // 调整列值 zindex | |
| 1248 | 新增: foreach (var item in _typeColValueRectMap) | |
| 1249 | 新增: { | |
| 1250 | 新增: var rectList = item.Value.OrderByDescending(m => m.Height).ToList(); | |
| 1251 | 新增: for (int i = 0; i < rectList.Count; i++) | |
| 1252 | 新增: { | |
| 1253 | 新增: var rect = rectList[i]; | |
| 1254 | 新增: Panel.SetZIndex(rect, i); | |
| 1255 | 新增: } | |
| 1182 | 1256 | } |
| 1183 | 1257 | |
| 1184 | 删除: var infoList = new List<ChartColumnInfoModel>(); | |
| 1185 | 1258 | |
| 1259 | 新增: // 最高 | |
| 1260 | 新增: var topValueText = new TextBlock(); | |
| 1261 | 新增: topValueText.Text = Maximum; | |
| 1262 | 新增: topValueText.FontSize = 12; | |
| 1263 | 新增: topValueText.Foreground = UI.Base.Color.Colors.GetFromString("#ccc"); | |
| 1264 | 新增: topValueText.ToolTip = "最高值"; | |
| 1265 | 新增: | |
| 1266 | 新增: var topValueTextSize = UIHelper.MeasureString(topValueText); | |
| 1267 | 新增: Panel.SetZIndex(topValueText, 1000); | |
| 1268 | 新增: Canvas.SetRight(topValueText, 0); | |
| 1269 | 新增: Canvas.SetTop(topValueText, colNameBottomMargin - topValueTextSize.Height / 2); | |
| 1270 | 新增: _typeColumnCanvas.Children.Add(topValueText); | |
| 1271 | 新增: | |
| 1272 | 新增: var topValueLine = new Line(); | |
| 1273 | 新增: topValueLine.Stroke = UI.Base.Color.Colors.GetFromString("#ccc"); | |
| 1274 | 新增: topValueLine.StrokeDashArray = new DoubleCollection() { 2, 5 }; | |
| 1275 | 新增: topValueLine.X1 = colNameBottomMargin; | |
| 1276 | 新增: topValueLine.X2 = canvasWidth - colNameBottomMargin - (topValueTextSize.Width); | |
| 1277 | 新增: topValueLine.Y1 = colNameBottomMargin; | |
| 1278 | 新增: topValueLine.Y2 = colNameBottomMargin; | |
| 1279 | 新增: topValueLine.StrokeThickness = 1; | |
| 1280 | 新增: _typeColumnCanvas.Children.Add(topValueLine); | |
| 1281 | 新增: | |
| 1282 | 新增: // 中间值 | |
| 1283 | 新增: double midY = (maxValue / 2) / maxValue * canvasHeight + colNameBottomMargin; | |
| 1284 | 新增: | |
| 1285 | 新增: var midValueText = new TextBlock(); | |
| 1286 | 新增: midValueText.Text = Median; | |
| 1287 | 新增: midValueText.FontSize = 12; | |
| 1288 | 新增: midValueText.Foreground = UI.Base.Color.Colors.GetFromString("#ccc"); | |
| 1289 | 新增: midValueText.ToolTip = "中间值"; | |
| 1290 | 新增: | |
| 1291 | 新增: var midValueTextSize = UIHelper.MeasureString(midValueText); | |
| 1292 | 新增: Panel.SetZIndex(midValueText, 1000); | |
| 1293 | 新增: Canvas.SetRight(midValueText, 0); | |
| 1294 | 新增: Canvas.SetTop(midValueText, midY - midValueTextSize.Height / 2); | |
| 1295 | 新增: _typeColumnCanvas.Children.Add(midValueText); | |
| 1296 | 新增: | |
| 1297 | 新增: var midValueLine = new Line(); | |
| 1298 | 新增: midValueLine.Stroke = UI.Base.Color.Colors.GetFromString("#ccc"); | |
| 1299 | 新增: midValueLine.StrokeDashArray = new DoubleCollection() { 2, 5 }; | |
| 1300 | 新增: midValueLine.StrokeThickness = 1; | |
| 1301 | 新增: | |
| 1302 | 新增: | |
| 1303 | 新增: midValueLine.X1 = colNameBottomMargin; | |
| 1304 | 新增: midValueLine.X2 = canvasWidth - colNameBottomMargin - (midValueTextSize.Width); | |
| 1305 | 新增: midValueLine.Y1 = midY; | |
| 1306 | 新增: midValueLine.Y2 = midY; | |
| 1307 | 新增: _typeColumnCanvas.Children.Add(midValueLine); | |
| 1308 | 新增: | |
| 1309 | 新增: | |
| 1310 | 新增: // 组装分类统计数据 | |
| 1311 | 新增: var infoList = new List<ChartColumnInfoModel>(); | |
| 1186 | 1312 | list = list.OrderByDescending(m => m.Values.Sum()).ToList(); |
| 1187 | 删除: | |
| 1188 | 1313 | foreach (var item in list) |
| 1189 | 1314 | { |
| 1190 | 1315 | infoList.Add(new ChartColumnInfoModel() |
| @@ -1195,9 +1320,7 @@ namespace UI.Controls.Charts | ||
| 1195 | 1320 | Text = Covervalue(item.Values.Sum()) + Unit |
| 1196 | 1321 | }); |
| 1197 | 1322 | } |
| 1198 | 删除: | |
| 1199 | 1323 | ColumnInfoList = infoList; |
| 1200 | 删除: | |
| 1201 | 1324 | isRendering = false; |
| 1202 | 1325 | } |
| 1203 | 1326 | #endregion |
| @@ -12,6 +12,6 @@ namespace UI.Controls.Charts.Model | ||
| 12 | 12 | public string Name { get; set; } |
| 13 | 13 | public string Icon { get; set; } |
| 14 | 14 | public string Text { get; set; } |
| 15 | 删除: | |
| 15 | 新增: public double Value { get; set; } | |
| 16 | 16 | } |
| 17 | 17 | } |
| @@ -192,21 +192,9 @@ | ||
| 192 | 192 | </Grid> |
| 193 | 193 | </Border> |
| 194 | 194 | </Popup> |
| 195 | 删除: <TextBlock Panel.ZIndex="2" Margin="0,-8,0,0" HorizontalAlignment="Right" VerticalAlignment="Top" Text="{TemplateBinding Maximum}" Foreground="#ccc" FontSize="12"/> | |
| 196 | 删除: | |
| 197 | 删除: <TextBlock Panel.ZIndex="2" HorizontalAlignment="Right" VerticalAlignment="Center" Text="{TemplateBinding Median}" Foreground="#ccc" FontSize="12" Margin="0,0,0,30"/> | |
| 198 | 删除: <Line Stroke="#ccc" Opacity="1" HorizontalAlignment="Stretch" | |
| 199 | 删除: X2="{Binding ActualWidth, RelativeSource={RelativeSource Self}}" | |
| 200 | 删除: StrokeDashArray="2 5" StrokeThickness=".8" VerticalAlignment="Center" Margin="10,0,10,30"/> | |
| 201 | 删除: | |
| 202 | 删除: <Line Stroke="#ccc" Opacity="1" HorizontalAlignment="Stretch" | |
| 203 | 删除: X2="{Binding ActualWidth, RelativeSource={RelativeSource Self}}" | |
| 204 | 删除: StrokeDashArray="2 5" StrokeThickness=".8" VerticalAlignment="Top" Margin="10,0"/> | |
| 205 | 删除: | |
| 195 | 新增: | |
| 206 | 196 | <Border BorderThickness="1,0,0,1" BorderBrush="#7e7e7e"> |
| 207 | 删除: <Grid x:Name="ColumnContainer"> | |
| 208 | 删除: | |
| 209 | 删除: </Grid> | |
| 197 | 新增: <Canvas x:Name="TypeColumnCanvas"/> | |
| 210 | 198 | </Border> |
| 211 | 199 | </Grid> |
| 212 | 200 | <!--信息--> |
| @@ -193,22 +193,11 @@ | ||
| 193 | 193 | </Grid> |
| 194 | 194 | </Border> |
| 195 | 195 | </Popup> |
| 196 | 删除: <TextBlock Panel.ZIndex="2" Margin="0,-8,0,0" HorizontalAlignment="Right" VerticalAlignment="Top" Text="{TemplateBinding Maximum}" Foreground="#ccc" FontSize="12"/> | |
| 197 | 删除: | |
| 198 | 删除: <TextBlock Panel.ZIndex="2" HorizontalAlignment="Right" VerticalAlignment="Center" Text="{TemplateBinding Median}" Foreground="#ccc" FontSize="12" Margin="0,0,0,30"/> | |
| 199 | 删除: <Line Stroke="#ccc" Opacity="1" HorizontalAlignment="Stretch" | |
| 200 | 删除: X2="{Binding ActualWidth, RelativeSource={RelativeSource Self}}" | |
| 201 | 删除: StrokeDashArray="2 5" StrokeThickness=".8" VerticalAlignment="Center" Margin="10,0,10,30"/> | |
| 202 | 删除: | |
| 203 | 删除: <Line Stroke="#ccc" Opacity="1" HorizontalAlignment="Stretch" | |
| 204 | 删除: X2="{Binding ActualWidth, RelativeSource={RelativeSource Self}}" | |
| 205 | 删除: StrokeDashArray="2 5" StrokeThickness=".8" VerticalAlignment="Top" Margin="10,0"/> | |
| 206 | 196 | |
| 207 | 197 | <Border BorderThickness="1,0,0,1" BorderBrush="#eeeef2"> |
| 208 | 删除: <Grid x:Name="ColumnContainer"> | |
| 209 | 删除: | |
| 210 | 删除: </Grid> | |
| 198 | 新增: <Canvas x:Name="TypeColumnCanvas"/> | |
| 211 | 199 | </Border> |
| 200 | 新增: | |
| 212 | 201 | </Grid> |
| 213 | 202 | <!--信息--> |
| 214 | 203 | <Grid Grid.Row="2" Margin="0,5,0,0"> |
| @@ -127,6 +127,7 @@ | ||
| 127 | 127 | </ApplicationDefinition> |
| 128 | 128 | <Compile Include="Base\Color\Colors.cs" /> |
| 129 | 129 | <Compile Include="Base\Color\ColorTypes.cs" /> |
| 130 | 新增: <Compile Include="Base\UIHelper.cs" /> | |
| 130 | 131 | <Compile Include="Controls\Base\EmptyData.cs" /> |
| 131 | 132 | <Compile Include="Controls\Base\CheckBox.cs" /> |
| 132 | 133 | <Compile Include="Controls\Base\ColorSelect.cs" /> |

