/// <summary> /// 将新的数据对象集合对应的TreeViewItem控件包装为可拖曳 /// </summary> void wrapTreeViewItemForDrag(DevTypeCollection devCollection) { foreach (DevType dataCell in devCollection.DevTypeList) { //根据数据源对象获取UI控件 TreeViewItem tvItem = treeView1.ItemContainerGenerator.ContainerFromItem(dataCell) as TreeViewItem; if (tvItem != null) { new CustomDragDropHelper(tvItem);//包装成可拖曳的控件 //tvItem.PreviewMouseLeftButtonDown += new MouseButtonEventHandler(tvItem_PreviewMouseLeftButtonDown); } } }
/// <summary> /// 刷新树控件 /// </summary> void refreshTreeView(DevTypeCollection devTypeC) { treeView1.DataContext = devTypeC.DevTypeList; treeView1.ItemsSource = devTypeC.DevTypeList; wrapTreeViewItemForDrag(devTypeC); }
/// <summary> /// 在元素已布局、已呈现且可用于交互时发生的事件函数。 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void UserControl_Loaded(object sender, RoutedEventArgs e) { try { bus.DeviceType[] deviceTypeArray = Application.Current.Properties["DeviceTypeArray"] as bus.DeviceType[]; if (deviceTypeArray == null) throw new ApplicationException("当前Application缓存查找不到设备类型类表"); DevTypeCollection devTypeC = new DevTypeCollection(); devTypeC.initFromDataBusDevTypeArray(deviceTypeArray); refreshTreeView(devTypeC);//初始化树拖曳功能 this.initDropCanvas();//初始化显示面板:将该用户已经监控的设备的对应图标放置在面板上 } catch (Exception e1) { MessageBox.Show(e1.Message); } }
/// <summary> /// 刷新所有数据 /// </summary> public void refreshData() { string userID = Application.Current.Properties["userID"] as string; bus.DataBusServiceClient dataBusServiceClient = new bus.DataBusServiceClient(); try { DataBus dataBus1 = new DataBus(); dataBus1.fillDataBusByRemoteService(dataBusServiceClient,userID); //this.dataBus = dataBus1; Application.Current.Properties["DataBus"] = dataBus1; bus.DeviceType[] deviceTypeArray=dataBusServiceClient.QueryAllDeviceTypeInfo(); Application.Current.Properties["DeviceTypeArray"] = deviceTypeArray; DevTypeCollection devTypeC=new DevTypeCollection(); devTypeC.initFromDataBusDevTypeArray(deviceTypeArray); refreshTreeView(devTypeC); } catch (Exception exp) { MessageBox.Show(exp.Message); return; } finally { if (dataBusServiceClient != null) dataBusServiceClient.Close(); dataBusServiceClient = null; } }