You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
244 lines
8.8 KiB
244 lines
8.8 KiB
using System; |
|
using System.Linq; |
|
using System.Threading; |
|
using System.Windows; |
|
using System.Windows.Controls; |
|
using System.Windows.Threading; |
|
using DevExpress.Xpf.Core.Native; |
|
using ESRI.ArcGIS.Controls; |
|
using KGIS.Framework.Utils; |
|
using KGIS.Framework.Utils.Interface; |
|
using KGIS.Framework.Views; |
|
using KGIS.Framework.Maps; |
|
using KGIS.Framework.Platform; |
|
using Kingo.Plugin.ResultsOfProof.ViewModel; |
|
|
|
namespace Kingo.Plugin.ResultsOfProof.View.JZTBXX |
|
{ |
|
/// <summary> |
|
/// BGFrmJZTBList.xaml 的交互逻辑 |
|
/// </summary> |
|
public partial class BGFrmJZTBList : UserControl, IDockPanel2 |
|
{ |
|
//用于定位 |
|
public IHookHelper m_hookHelper { get; set; } |
|
public Guid ID { get; set; } |
|
public DockStyle DockAreas { get; set; } |
|
public System.Drawing.Size FloatSize { get; set; } |
|
public int DockWidth { get; set; } |
|
public int DockHeight { get; set; } |
|
public DockStyle DefaultArea { get; set; } |
|
public bool ShowCloseButton { get; set; } |
|
public bool ShowAutoHideButton { get; set; } |
|
public string Title { get; set; } |
|
public bool IsShowInMap { get; set; } |
|
|
|
private bool IsReturn = false; |
|
|
|
private IMapService _MapService; |
|
|
|
public event EventHandler CloseViewHandler; |
|
|
|
public BGJZTBListViewModel ViewModel = null; |
|
|
|
|
|
|
|
/// <summary> |
|
/// 构造函数 |
|
/// </summary> |
|
/// <param name="hook"></param> |
|
/// <param name="pIsExportJZTBXXB">是否导出举证图斑信息表</param> |
|
public BGFrmJZTBList(IHookHelper hookHelper) |
|
{ |
|
try |
|
{ |
|
DevExpress.Xpf.Core.ThemeManager.SetTheme(this, DevExpress.Xpf.Core.Theme.Office2013LightGray); |
|
_MapService = MapsManager.Instance.MapService;// Platform.Instance.MapsManager.GetMapService(); |
|
InitializeComponent(); |
|
this.m_hookHelper = hookHelper; |
|
Init(); |
|
_MapService.OnSelectionChanged += AxMapControl_OnSelectionChanged; |
|
} |
|
catch (Exception ex) |
|
{ |
|
LogAPI.Debug(ex); |
|
} |
|
//TODO 周旺华 用于处理弹出筛选界面无法输入英文和字符问题 |
|
gcXJJZTB.View.FilterEditorCreated += (sender, e) => |
|
{ |
|
Window window; |
|
Dispatcher.BeginInvoke(new Action(() => |
|
{ |
|
window = LayoutHelper.FindLayoutOrVisualParentObject<Window>(e.FilterControl); |
|
window.Close(); |
|
window.ShowDialog(); |
|
}), DispatcherPriority.Render); |
|
}; |
|
} |
|
public void Init() |
|
{ |
|
|
|
this.DockAreas = DockStyle.DockBottom | DockStyle.Float; |
|
this.FloatSize = new System.Drawing.Size(600, 800); |
|
this.DefaultArea = DockStyle.DockBottom; |
|
this.ShowCloseButton = true; |
|
this.ShowAutoHideButton = true; |
|
this.Title = "举证图斑信息表"; |
|
this.DockHeight = 230; |
|
this.IsShowInMap = true; |
|
ViewModel = new BGJZTBListViewModel(m_hookHelper.Hook); |
|
ViewModel.m_hookHelper = this.m_hookHelper; |
|
DataContext = ViewModel; |
|
CommandSubscribe(); |
|
|
|
ControlsZoomToSelectedCommandClass zoom = new ControlsZoomToSelectedCommandClass(); |
|
zoom.OnCreate(m_hookHelper.Hook); |
|
zoom.OnClick(); |
|
IsReturn = false; |
|
} |
|
|
|
|
|
private void CommandSubscribe() |
|
{ |
|
try |
|
{ |
|
//上一条 |
|
ViewModel.PrevDataCmd.Subscribe(_ => |
|
{ |
|
int[] seleRows = gcXJJZTB.GetSelectedRowHandles(); |
|
if (seleRows == null || seleRows.Length == 0) |
|
return; |
|
if (seleRows.Min() > 0) |
|
{ |
|
ViewModel.RowHandle = seleRows.Min() - 1; |
|
gcXJJZTB.BeginSelection(); |
|
gcXJJZTB.UnselectAll(); |
|
gcXJJZTB.SelectItem(seleRows.Min() - 1); |
|
tvXJJZTB.MoveFocusedRow(ViewModel.RowHandle); |
|
gcXJJZTB.EndSelection(); |
|
} |
|
}); |
|
//下一条 |
|
ViewModel.NextDataCmd.Subscribe(_ => |
|
{ |
|
int[] seleRows = gcXJJZTB.GetSelectedRowHandles(); |
|
if (seleRows == null || seleRows.Length == 0) |
|
return; |
|
if (seleRows.Max() < gcXJJZTB.VisibleRowCount - 1) |
|
{ |
|
ViewModel.RowHandle = seleRows.Max() + 1; |
|
gcXJJZTB.BeginSelection(); |
|
gcXJJZTB.UnselectAll(); |
|
gcXJJZTB.SelectItem(ViewModel.RowHandle); |
|
tvXJJZTB.MoveFocusedRow(ViewModel.RowHandle); |
|
gcXJJZTB.EndSelection(); |
|
} |
|
}); |
|
ViewModel.RefreshDataCmd.Subscribe(_ => |
|
{ |
|
try |
|
{ |
|
int[] seleRows = gcXJJZTB.GetSelectedRowHandles(); |
|
if (seleRows == null || seleRows.Length == 0) |
|
return; |
|
if (seleRows.Max() < gcXJJZTB.VisibleRowCount - 1) |
|
{ |
|
ViewModel.RowHandle = seleRows.Max(); |
|
Thread.Sleep(500); |
|
ViewModel.RefreshSource(); |
|
gcXJJZTB.BeginSelection(); |
|
gcXJJZTB.UnselectAll(); |
|
gcXJJZTB.SelectItem(ViewModel.RowHandle); |
|
tvXJJZTB.MoveFocusedRow(ViewModel.RowHandle); |
|
gcXJJZTB.EndSelection(); |
|
} |
|
} |
|
catch (Exception ex) |
|
{ |
|
LogAPI.Debug("刷新举证图斑信息表失败:"); |
|
LogAPI.Debug(ex); |
|
} |
|
}); |
|
|
|
ViewModel.GridControlUnSelectAll.Subscribe(_ => |
|
{ |
|
gcXJJZTB.UnselectAll(); |
|
}); |
|
ViewModel.GridControlRefreshData.Subscribe(_ => |
|
{ |
|
gcXJJZTB.RefreshData(); |
|
}); |
|
ViewModel.GridControlFocusRow.Subscribe(_ => |
|
{ |
|
gcXJJZTB.BeginSelection(); |
|
gcXJJZTB.UnselectAll(); |
|
int cont = gcXJJZTB.VisibleRowCount; |
|
int topRowIndex = 0; |
|
//cont = cont > 200 ? 200 : cont; |
|
for (int i = 0; i < cont; i++) |
|
{ |
|
int rowHandle = gcXJJZTB.GetRowHandleByVisibleIndex(i); |
|
if (!gcXJJZTB.IsGroupRowHandle(rowHandle)) |
|
{ |
|
int objId = int.Parse(gcXJJZTB.GetCellValue(rowHandle, gcXJJZTB.Columns["OBJECTID"]).ToString()); |
|
if (ViewModel.ObjectIDArray.Contains(objId))//选中集合是否和当前显示在DataView中的数据匹配 |
|
{ |
|
gcXJJZTB.SelectItem(rowHandle); |
|
ViewModel.RowHandle = rowHandle; |
|
if (topRowIndex <= 0) |
|
{ |
|
topRowIndex = rowHandle; |
|
} |
|
} |
|
} |
|
} |
|
gcXJJZTB.EndSelection(); |
|
}); |
|
} |
|
catch (Exception ex) |
|
{ |
|
throw ex; |
|
} |
|
} |
|
|
|
private void AxMapControl_OnSelectionChanged(object sender, EventArgs e) |
|
{ |
|
Dispatcher.Invoke(new Action(() => |
|
{ |
|
//ViewModel.RefreshSource(); |
|
})); |
|
} |
|
|
|
public event Action<NotifyMsgPackage> NotifyMsgEven; |
|
public void SetNotifyMsg(NotifyMsgPackage msg) |
|
{ |
|
if (NotifyMsgEven != null) |
|
{ |
|
NotifyMsgEven(msg); |
|
} |
|
} |
|
|
|
public void ShowPanel() |
|
{ |
|
Platform.Instance.OpenView(this, false); |
|
if (MapsManager.Instance.MapService != null) |
|
{ |
|
MapsManager.Instance.MapService.ProjectClosed += (sender, e) => |
|
{ |
|
ClosePanel(); |
|
}; |
|
} |
|
} |
|
|
|
public void ClosePanel() |
|
{ |
|
Platform.Instance.CloseView(this); |
|
ViewModel = null; |
|
} |
|
|
|
public void ClosePanelInvoke() |
|
{ |
|
CloseViewHandler?.Invoke(this, null); |
|
} |
|
} |
|
}
|
|
|