/// <summary> /// 展开车辆 /// </summary> /// <param name="car"></param> public void ExpandCar(SLCar car) { SLTreeViewItem data = RootTreeViewItem.GeTreeViewItemByCar(car); if (data != null) { var datas = data.GeTreeViewItemParents(false); if (!datas.Any()) { return; } //datas.ForEach(x => x.IsExpanded = true); tv.ExpandPath(datas); tv.SelectItem(data); if (tv.SelectedItem == null || tv.SelectedItem != data) { DispatcherTimer timer = new DispatcherTimer(); timer.Tick += (sender, args) => { tv.SelectItem(data); if (tv.SelectedItem != null && tv.SelectedItem == data) { timer.Stop(); timer = null; } }; timer.Interval = new TimeSpan(0, 0, 0, 0, 300); timer.Start(); } } }
/// <summary> /// 通过车辆找到TreeViewData /// </summary> /// <param name="car"></param> /// <returns></returns> public SLTreeViewItem GeTreeViewItemByCar(SLCar car) { if (car == null) { return(null); } SLTreeViewItem rItem = null; if (HasItems) { foreach (SLTreeViewItem x in Items) { if (x.DataCar != null && x.DataCar == car) { rItem = x; break; } rItem = x.GeTreeViewItemByCar(car); if (rItem != null) { break; } } return(rItem); } else { return(rItem); } }
private void _datacar_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) { SLCar c = (SLCar)sender; if (e.PropertyName == nameof(SLCar.CarState)) { State = c.CarState; //车辆状态发生改变 } else if (e.PropertyName == nameof(SLCar.LastGpsData) + "." + nameof(NEWTRACK)) { TimeStr = ""; if (!gwcMode) { City = c.LastGpsData.POSITION_CITY; } UpdateExtensionText(); } if (gwcMode && e.PropertyName == nameof(SLCar.STATE)) { switch (c.STATE) { case 1: City = "任务中"; break; default: City = "可调派"; break; } UpdateExtensionText(); } }
internal MapCar(SLCar car, MapLayer mapLayer, object tag = null) { Width = 16; Height = 32; _imgCar = new Image() { Stretch = Stretch.Uniform }; Content = _imgCar; _borderName = new Border(); _borderName.Background = new SolidColorBrush(Color.FromArgb(0xC8, 0xE5, 0xE6, 0xE8)); _borderName.CornerRadius = new CornerRadius(0); _borderName.Padding = new Thickness(2, 0, 2, 1); _borderName.Margin = new Thickness(0, 0, 0, 16); _borderName.BorderThickness = new Thickness(1); _borderName.BorderBrush = new SolidColorBrush(Colors.Gray); _lblCarName = new Label(); _lblCarName.FontSize = 12; _lblCarName.Tag = "0"; _borderName.MouseLeftButtonDown += _lblCarName_MouseLeftButtonDown; _borderName.Child = _lblCarName; if (tag != null && tag.ToString() == "gwc") { _gwcMode = true; carInfoItems = new MapCarInfoBindItems( new MapCarInfoBindItem("车牌号", ""), new MapCarInfoBindItem("任务状态", ""), new MapCarInfoBindItem("乘 客", ""), new MapCarInfoBindItem("起始地点", ""), new MapCarInfoBindItem("起始时间", ""), new MapCarInfoBindItem("结束地点", ""), new MapCarInfoBindItem("结束时间", ""), new MapCarInfoBindItem("驾驶员", "") ); } else { carInfoItems = new MapCarInfoBindItems( new MapCarInfoBindItem("车牌号", ""), new MapCarInfoBindItem("时 间", ""), new MapCarInfoBindItem("速 度", ""), new MapCarInfoBindItem("地 点", ""), new MapCarInfoBindItem("定 位", ""), new MapCarInfoBindItem("状 态", "") ); } IsActive = false; _mapLayer = mapLayer; _mapLayer.MapAdjustChanged += _mapLayer_MapAdjustChanged; Car = car; }
public void ShowSearchResult(SLTextBox txtTarget, Panel addTo, List <SLCar> searchList) { if (searchList == null || searchList.Count == 0 || txtTarget == null || addTo == null) { return; } Orientation = Orientation.Vertical; Margin = new Thickness(5, 30, 0, 0); VerticalAlignment = VerticalAlignment.Top; HorizontalAlignment = HorizontalAlignment.Left; MaxHeight = 400; Width = txtTarget.Width; SLListBox listBox = null; if (Children.Count == 0) { listBox = new SLListBox(); listBox.Width = Width; listBox.SelectionMode = SelectionMode.Single; listBox.MouseLeftButtonUp += (sender, args) => { args.Handled = true; Visibility = Visibility.Collapsed; if (listBox.SelectedItems.Count > 0) { SLCar selcar = (SLCar)listBox.SelectedItems[0]; SelectedCar?.Invoke(selcar); } }; Children.Add(listBox); txtTarget.MouseLeftButtonDown += (sender, e) => { Visibility = Visibility.Collapsed; searchList.Clear(); }; } else { listBox = Children[0] as SLListBox; } listBox.ItemsSource = searchList; Grid.SetRowSpan(this, 3); if (!addTo.Children.Contains(this)) { addTo.Children.Add(this); } Visibility = Visibility.Visible; }
/// <summary> /// 选择改变事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void tv_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs <object> e) { SLTreeViewItem item = e.NewValue as SLTreeViewItem; SLCar car = null; if (item != null) { car = item.DataCar; } if (SelectedCarChanged != null) { SelectedCarChanged(car); } }
//车辆属性改变事件 void _dataCar_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) { SLCar car = (SLCar)sender; if (e.PropertyName == "CarState") //车辆状态发生改变 { CarState = car.CarState; } if (car.LastGpsData != null) { string timeStr = CarState == CarState.OffLine ? car.LastGpsData.GNSSTIME.ToString("[yy/MM/dd HH:mm]") : ""; ExtensionText = string.Format(carFormatStr, car.LastGpsData.POSITION_CITY, timeStr); } }
/// <summary> /// 选中改变事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void SLTreeView2Data_CheckedItemChanged(SLTreeView2Data item, SLCar car, bool isAdd) { if (isAdd) { if (!_checkedCars.ContainsKey(car)) { _checkedCars.Add(car, item); } } else { if (_checkedCars.ContainsKey(car)) { _checkedCars.Remove(car); } } }
/// <summary> /// 选择改变事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void tv_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs <object> e) { SLTreeView2Data item = e.NewValue as SLTreeView2Data; if (item != null) { if (SelectedCar == item.Car) { return; } SelectedCar = item.Car; lastClickTime = DateTime.MinValue; if (SelectedCarChanged != null) { SelectedCarChanged(SelectedCar); } } }
/// <summary> /// 展开车辆 /// </summary> /// <param name="car"></param> public void ExpandCar(SLCar car) { if (_tvScrollViewer == null) { _tvScrollViewer = tv.GetScrollHost(); } SLTreeView2Data data = _rootUnitData.GetTreeViewDataByCar(car); if (data != null) { var datas = data.GetTreeViewDataParents(false); if (datas.Any()) { tv.ExpandPath(datas); } tv.SelectItem(data); if (tv.SelectedItem == null || tv.SelectedItem != data) { DispatcherTimer timer = new DispatcherTimer(); timer.Tick += (sender, args) => { if (tv.SelectedItem != null && tv.SelectedItem == data) { _tvScrollViewer.ScrollIntoView(tv.GetSelectedContainer()); timer.Stop(); timer = null; } else { tv.SelectItem(data); } }; timer.Interval = new TimeSpan(0, 0, 0, 0, 300); timer.Start(); } else { _tvScrollViewer.ScrollIntoView(tv.GetSelectedContainer()); } } }
/// <summary> /// 根据车辆找到TreeViewData /// </summary> /// <param name="car"></param> /// <returns></returns> public SLTreeView2Data GetTreeViewDataByCar(SLCar car) { if (car == null) { return(null); } bool isUnit = car.CARID == 0 && string.IsNullOrEmpty(car.MAC); SLTreeView2Data rItem = null; foreach (SLTreeView2Data x in Items) { if (!isUnit) { if (x.Car != null && x.Car == car) { rItem = x; break; } } else { if (x.Car == null && x.Name == car.LICENSE) { rItem = x; break; } } rItem = x.GetTreeViewDataByCar(car); if (rItem != null) { break; } } return(rItem); }
public MapCar GetMapCar(SLCar car, bool autoCreate = false, object tag = null) { MapCar mcar = null; if (car == null) { return(mcar); } if (_dicCreatedCars.ContainsKey(car)) { mcar = _dicCreatedCars[car]; } else { if (autoCreate) { mcar = new MapCar(car, this, tag); mcar.LocationChanged += Mcar_LocationChanged; _dicCreatedCars.Add(car, mcar); } } return(mcar); }