Kaynağa Gözat

补充窗体

ouruisong 1 yıl önce
ebeveyn
işleme
51420d89c4
26 değiştirilmiş dosya ile 3070 ekleme ve 162 silme
  1. 47 0
      CollaborativePlatformMain/CollaborativePlatformMain.csproj
  2. 2 1
      CollaborativePlatformMain/DFEntity/FloorLayerData.cs
  3. 123 0
      CollaborativePlatformMain/DFEntity/MessageSubUtil/OperatEntity.cs
  4. 47 0
      CollaborativePlatformMain/DFEntity/MessageSubUtil/OperatingFloorData.cs
  5. 130 0
      CollaborativePlatformMain/DFEntity/MessageSubUtil/ProjectEntity.cs
  6. 23 0
      CollaborativePlatformMain/Form/BigFullProfessiongForm.xaml
  7. 432 0
      CollaborativePlatformMain/Form/BigFullProfessiongForm.xaml.cs
  8. 62 43
      CollaborativePlatformMain/Form/FloorDrawingForm.xaml
  9. 96 6
      CollaborativePlatformMain/Form/FloorDrawingForm.xaml.cs
  10. 65 9
      CollaborativePlatformMain/Form/HomepageForm.xaml.cs
  11. 108 0
      CollaborativePlatformMain/Form/MessageSubPage/FullProfessionPage.xaml
  12. 193 0
      CollaborativePlatformMain/Form/MessageSubPage/FullProfessionPage.xaml.cs
  13. 25 27
      CollaborativePlatformMain/Form/MessageSubPage/Project/NewProjrctPage.xaml
  14. 143 2
      CollaborativePlatformMain/Form/MessageSubPage/Project/NewProjrctPage.xaml.cs
  15. 44 0
      CollaborativePlatformMain/Form/MessageSubPage/Project/OperatingFloorPage.xaml
  16. 186 0
      CollaborativePlatformMain/Form/MessageSubPage/Project/OperatingFloorPage.xaml.cs
  17. 33 0
      CollaborativePlatformMain/Form/MessageSubPage/Project/ProjectInfoPage.xaml
  18. 76 0
      CollaborativePlatformMain/Form/MessageSubPage/Project/ProjectInfoPage.xaml.cs
  19. 58 0
      CollaborativePlatformMain/Form/MessageSubPage/Project/TempPage.xaml
  20. 128 0
      CollaborativePlatformMain/Form/MessageSubPage/Project/TempPage.xaml.cs
  21. 22 9
      CollaborativePlatformMain/Form/MessageSubPage/SeconProjectPage.xaml
  22. 176 4
      CollaborativePlatformMain/Form/MessageSubPage/SeconProjectPage.xaml.cs
  23. 40 48
      CollaborativePlatformMain/Form/UploadDrawingForm.xaml
  24. 208 13
      CollaborativePlatformMain/Form/UploadDrawingForm.xaml.cs
  25. 333 0
      CollaborativePlatformMain/Form/UserControlForm/NativeCombox.xaml
  26. 270 0
      CollaborativePlatformMain/Form/UserControlForm/NativeCombox.xaml.cs

+ 47 - 0
CollaborativePlatformMain/CollaborativePlatformMain.csproj

@@ -92,9 +92,15 @@
     <Compile Include="DFEntity\MessageSubUtil\LegendEntity.cs" />
     <Compile Include="DFEntity\MessageSubUtil\LevelTableEntity.cs" />
     <Compile Include="DFEntity\MessageSubUtil\MessageData.cs" />
+    <Compile Include="DFEntity\MessageSubUtil\OperatEntity.cs" />
+    <Compile Include="DFEntity\MessageSubUtil\OperatingFloorData.cs" />
+    <Compile Include="DFEntity\MessageSubUtil\ProjectEntity.cs" />
     <Compile Include="DFEntity\MessageSubUtil\ThreeModelEntity.cs" />
     <Compile Include="DFEntity\MessageSubUtil\ToolFunctionEntity.cs" />
     <Compile Include="DFEntity\StandardizedEntity.cs" />
+    <Compile Include="Form\BigFullProfessiongForm.xaml.cs">
+      <DependentUpon>BigFullProfessiongForm.xaml</DependentUpon>
+    </Compile>
     <Compile Include="Form\FloorDrawingForm.xaml.cs">
       <DependentUpon>FloorDrawingForm.xaml</DependentUpon>
     </Compile>
@@ -107,9 +113,21 @@
     <Compile Include="Form\MessageSubPage\CreatLevel\SetLevelTablecreationForm.xaml.cs">
       <DependentUpon>SetLevelTablecreationForm.xaml</DependentUpon>
     </Compile>
+    <Compile Include="Form\MessageSubPage\FullProfessionPage.xaml.cs">
+      <DependentUpon>FullProfessionPage.xaml</DependentUpon>
+    </Compile>
     <Compile Include="Form\MessageSubPage\Project\NewProjrctPage.xaml.cs">
       <DependentUpon>NewProjrctPage.xaml</DependentUpon>
     </Compile>
+    <Compile Include="Form\MessageSubPage\Project\OperatingFloorPage.xaml.cs">
+      <DependentUpon>OperatingFloorPage.xaml</DependentUpon>
+    </Compile>
+    <Compile Include="Form\MessageSubPage\Project\ProjectInfoPage.xaml.cs">
+      <DependentUpon>ProjectInfoPage.xaml</DependentUpon>
+    </Compile>
+    <Compile Include="Form\MessageSubPage\Project\TempPage.xaml.cs">
+      <DependentUpon>TempPage.xaml</DependentUpon>
+    </Compile>
     <Compile Include="Form\MessageSubPage\SeconContactsPage.xaml.cs">
       <DependentUpon>SeconContactsPage.xaml</DependentUpon>
     </Compile>
@@ -137,12 +155,20 @@
     <Compile Include="Form\UserControlForm\CBButtonControls.xaml.cs">
       <DependentUpon>CBButtonControls.xaml</DependentUpon>
     </Compile>
+    <Compile Include="Form\UserControlForm\NativeCombox.xaml.cs">
+      <DependentUpon>NativeCombox.xaml</DependentUpon>
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Compile>
     <Compile Include="Form\UserControlForm\ProjectControls.xaml.cs">
       <DependentUpon>ProjectControls.xaml</DependentUpon>
     </Compile>
     <Compile Include="Util\CollaborationUtil.cs" />
     <Compile Include="Util\CreatLevelUtil.cs" />
     <Compile Include="Util\LoginUtil.cs" />
+    <Page Include="Form\BigFullProfessiongForm.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </Page>
     <Page Include="Form\FloorDrawingForm.xaml">
       <SubType>Designer</SubType>
       <Generator>MSBuild:Compile</Generator>
@@ -159,10 +185,26 @@
       <SubType>Designer</SubType>
       <Generator>MSBuild:Compile</Generator>
     </Page>
+    <Page Include="Form\MessageSubPage\FullProfessionPage.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </Page>
     <Page Include="Form\MessageSubPage\Project\NewProjrctPage.xaml">
       <SubType>Designer</SubType>
       <Generator>MSBuild:Compile</Generator>
     </Page>
+    <Page Include="Form\MessageSubPage\Project\OperatingFloorPage.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </Page>
+    <Page Include="Form\MessageSubPage\Project\ProjectInfoPage.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </Page>
+    <Page Include="Form\MessageSubPage\Project\TempPage.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </Page>
     <Page Include="Form\MessageSubPage\SeconContactsPage.xaml">
       <SubType>Designer</SubType>
       <Generator>MSBuild:Compile</Generator>
@@ -203,6 +245,11 @@
       <SubType>Designer</SubType>
       <Generator>MSBuild:Compile</Generator>
     </Page>
+    <Page Include="Form\UserControlForm\NativeCombox.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Page>
     <Page Include="Form\UserControlForm\ProjectControls.xaml">
       <SubType>Designer</SubType>
       <Generator>MSBuild:Compile</Generator>

+ 2 - 1
CollaborativePlatformMain/DFEntity/FloorLayerData.cs

@@ -42,8 +42,9 @@ namespace CollaborativePlatformMain.DFEntity
         /// </summary>
         /// <param name="floorName"></param>
         /// <param name="subDatas"></param>
-        public FloorLayerData(string floorName, List<FloorLayerData> subDatas) : this(floorName)
+        public FloorLayerData(string floorName, List<FloorLayerData> subDatas) 
         {
+            FloorName = floorName;
             SubDatas = subDatas;
         }
 

+ 123 - 0
CollaborativePlatformMain/DFEntity/MessageSubUtil/OperatEntity.cs

@@ -0,0 +1,123 @@
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace CollaborativePlatformMain.DFEntity.MessageSubUtil
+{
+    /// <summary>
+    /// 
+    /// <para>文件名(File Name):     OperatEntity.cs</para>
+    /// 
+    /// <para>描述(Description):     工作台展示数据</para>
+    /// 
+    /// <para>数据表(Tables):        nothing</para>
+    /// 
+    /// <para>作者(Author):          Ou Rui Song</para>
+    /// 
+    /// <para>日期(Create Date):     2024年5月5日16:18:46</para>
+    /// 
+    /// 修改记录(Revision History):
+    ///     R1:
+    ///         修改作者:
+    ///         修改日期:
+    ///         修改理由:
+    /// 
+    /// </summary>
+    public class OperatEntity: INotifyPropertyChanged
+    {
+        /// <summary>
+        /// 展示数据
+        /// </summary>
+        /// <param name="node">内容</param>
+        /// <param name="drawPath">图纸地址</param>
+        /// <param name="subDatas">子级数据</param>
+        /// <param name="isLayer">是否为图层</param>
+        public OperatEntity(string node, string drawPath, ObservableCollection<OperatEntity> subDatas, bool isLayer) 
+        {
+            Node = node;
+            DrawPath = drawPath;
+            SubDatas = subDatas;
+            IsLayer = isLayer;
+        }
+
+
+        /// <summary>
+        /// 唯一id
+        /// </summary>
+        public string Id { get; set; } = Guid.NewGuid().ToString();
+
+        /// <summary>
+        /// 内容
+        /// </summary>
+        public string Node { get; set; }
+
+        /// <summary>
+        /// 图纸地址
+        /// </summary>
+        public string DrawPath { get; set; }
+
+        /// <summary>
+        /// 子级数据
+        /// </summary>
+        public ObservableCollection<OperatEntity> SubDatas { get; set; } = new ObservableCollection<OperatEntity>();
+
+
+        /// <summary>
+        /// 是否为图层
+        /// </summary>
+        public bool IsLayer { get; set; } = false;
+
+        /// <summary>
+        /// 是否展示
+        /// </summary>
+        public string isShow { get; set; } = "Collapsed";
+
+        /// <summary>
+        /// 是否展示
+        /// </summary>
+        public string IsShow
+        {
+            get { return isShow; }
+            set
+            {
+                if (value != isShow)
+                {
+                    isShow = value;
+                    NotifyPropertyChanged("IsShow");
+                }
+            }
+        }
+
+        /// <summary>
+        /// 是否选中
+        /// </summary>
+        public bool isCheck { get; set; } = false;
+
+        /// <summary>
+        /// 是否选中
+        /// </summary>
+        public bool IsCheck
+        {
+            get { return isCheck; }
+            set
+            {
+                if (value != isCheck)
+                {
+                    isCheck = value;
+                    NotifyPropertyChanged("IsCheck");
+                }
+            }
+        }
+
+
+        public event PropertyChangedEventHandler PropertyChanged;
+        private void NotifyPropertyChanged(string propertyName = "")
+        {
+            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
+        }
+    }
+}

+ 47 - 0
CollaborativePlatformMain/DFEntity/MessageSubUtil/OperatingFloorData.cs

@@ -0,0 +1,47 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace CollaborativePlatformMain.DFEntity.MessageSubUtil
+{
+    /// <summary>
+    /// 
+    /// <para>文件名(File Name):     OperatingFloorData.cs</para>
+    /// 
+    /// <para>描述(Description):     工作台数据</para>
+    /// 
+    /// <para>数据表(Tables):        nothing</para>
+    /// 
+    /// <para>作者(Author):          Ou Rui Song</para>
+    /// 
+    /// <para>日期(Create Date):     2024年5月5日09:56:43</para>
+    /// 
+    /// 修改记录(Revision History):
+    ///     R1:
+    ///         修改作者:
+    ///         修改日期:
+    ///         修改理由:
+    /// 
+    /// </summary>
+    public class OperatingFloorData
+    {
+        /// <summary>
+        /// 工作台数据
+        /// </summary>
+        /// <param name="node"></param>
+        public OperatingFloorData(string node)
+        {
+            Node = node;
+        }
+
+
+        /// <summary>
+        /// 内容
+        /// </summary>
+        public string Node { get; set; }
+
+
+    }
+}

+ 130 - 0
CollaborativePlatformMain/DFEntity/MessageSubUtil/ProjectEntity.cs

@@ -0,0 +1,130 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace CollaborativePlatformMain.DFEntity.MessageSubUtil
+{
+    /// <summary>
+    /// 
+    /// <para>文件名(File Name):     ProjectEntity.cs</para>
+    /// 
+    /// <para>描述(Description):     项目信息数据</para>
+    /// 
+    /// <para>数据表(Tables):        nothing</para>
+    /// 
+    /// <para>作者(Author):          Ou Rui Song</para>
+    /// 
+    /// <para>日期(Create Date):     2024年5月5日08:30:10</para>
+    /// 
+    /// 修改记录(Revision History):
+    ///     R1:
+    ///         修改作者:
+    ///         修改日期:
+    ///         修改理由:
+    /// 
+    /// </summary>
+    public class ProjectEntity
+    {
+        /// <summary>
+        /// 一级数据
+        /// </summary>
+        /// <param name="projectName"></param>
+        /// <param name="projectEntities"></param>
+        public ProjectEntity(string projectName, List<ProjectEntity> projectEntities)
+        {
+            ProjectName = projectName;
+            SubBuildNodes = projectEntities;
+        }
+
+        /// <summary>
+        ///  项目信息
+        /// </summary>
+        /// <param name="projectName"></param>
+        /// <param name="businessName"></param>
+        /// <param name="projectPath"></param>
+        public ProjectEntity(string projectName, string businessName, string projectPath)
+        {
+            ProjectName = projectName;
+            BusinessName = businessName;
+            ProjectPath = projectPath;
+        }
+
+        /// <summary>
+        /// 项目信息
+        /// </summary>
+        /// <param name="projectName"></param>
+        /// <param name="subData"></param>
+        public ProjectEntity(string projectName, ProjectEntity subData)
+        {
+            ProjectName = projectName;
+            SubData = subData;
+        }
+
+        /// <summary>
+        /// 团队成员
+        /// </summary>
+        /// <param name="projectName"></param>
+        /// <param name="teamMembers"></param>
+        public ProjectEntity(string projectName, Dictionary<string, string> teamMembers)
+        {
+            ProjectName = projectName;
+            TeamMembers = teamMembers;
+        }
+
+        /// <summary>
+        /// 工作台
+        /// </summary>
+        /// <param name="projectName"></param>
+        /// <param name="operatingFloorData"></param>
+        public ProjectEntity(string projectName, OperatingFloorData operatingFloorData)
+        {
+            ProjectName = projectName;
+            OperatingFloorData = operatingFloorData;
+        }
+
+
+        /// <summary>
+        /// 唯一id
+        /// </summary>
+        public string Id { get; set; } = Guid.NewGuid().ToString();
+
+        /// <summary>
+        /// 一级:项目名称
+        /// 二级:楼栋名称
+        /// 三级:楼栋信息
+        /// </summary>
+        public string ProjectName { get; set; }
+
+        /// <summary>
+        /// 业态名称
+        /// </summary>
+        public string BusinessName { get; set; }
+
+        /// <summary>
+        /// 项目地址
+        /// </summary>
+        public string ProjectPath { get; set; }
+
+        /// <summary>
+        /// 子级数据
+        /// </summary>
+        public List<ProjectEntity> SubBuildNodes { get; set; } = new List<ProjectEntity>();
+
+        /// <summary>
+        /// 子级内容
+        /// </summary>
+        public ProjectEntity SubData { get; set; }
+
+        /// <summary>
+        /// 团队成员
+        /// </summary>
+        public Dictionary<string, string> TeamMembers { get; set; } = new Dictionary<string, string>();
+
+        /// <summary>
+        /// 工作台数据
+        /// </summary>
+        public OperatingFloorData OperatingFloorData { get; set; }
+    }
+}

+ 23 - 0
CollaborativePlatformMain/Form/BigFullProfessiongForm.xaml

@@ -0,0 +1,23 @@
+<Window x:Class="CollaborativePlatformMain.Form.BigFullProfessiongForm"
+        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+        xmlns:local="clr-namespace:CollaborativePlatformMain.Form"
+        mc:Ignorable="d" Loaded="Window_Loaded" Closed="Window_Closed"
+        Title="项目信息" Height="500" Width="1000" ResizeMode="NoResize"
+        WindowStartupLocation="CenterScreen">
+    <StackPanel>
+        <Frame Name="frame"  NavigationUIVisibility="Hidden"/>
+
+        <DockPanel Name="dp_ditu" Height="30" Visibility="Visible">
+            <Button Name="bt_ditu" Content="一键底图" HorizontalAlignment="Left" Margin="30,0,0,0" Click="Button_Click"/>
+            <Button Name="bt_luotu" Content="一键落图" HorizontalAlignment="Right" Margin="0,0,30,0" Click="Button_Click_1"/>
+        </DockPanel>
+
+        <!--<DockPanel Name="dp_luotu" Height="30" Visibility="Collapsed">
+           
+        </DockPanel>-->
+
+    </StackPanel>
+</Window>

+ 432 - 0
CollaborativePlatformMain/Form/BigFullProfessiongForm.xaml.cs

@@ -0,0 +1,432 @@
+using CollaborativePlatformMain.DFEntity.MessageSubUtil;
+using CollaborativePlatformMain.Form.MessageSubPage;
+using CollaborativePlatformMain.Form.MessageSubPage.Project;
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Shapes;
+
+namespace CollaborativePlatformMain.Form
+{
+    /// <summary>
+    /// BigFullProfessiongForm.xaml 的交互逻辑
+    /// </summary>
+    public partial class BigFullProfessiongForm : Window
+    {
+        /// <summary>
+        /// 父级窗体
+        /// </summary>
+        public HomepageForm HomepageForm;
+
+
+        /// <summary>
+        /// 父级窗体
+        /// </summary>
+        public OperatingFloorPage OperatingFloorPage;
+
+
+        /// <summary>
+        /// 子级窗体
+        /// </summary>
+        public FullProfessionPage SmallPage;
+
+        /// <summary>
+        /// 子级窗体
+        /// </summary>
+        public FullProfessionPage BigPage;
+
+        ///// <summary>
+        ///// 暖通数据
+        ///// </summary>
+        //public ObservableCollection<OperatEntity> WarmDatas = new ObservableCollection<OperatEntity>();
+
+
+
+
+        public BigFullProfessiongForm(HomepageForm homepageForm, FullProfessionPage fullProfessionPage, OperatingFloorPage operatingFloorPage)
+        {
+            InitializeComponent();
+            HomepageForm = homepageForm;
+            SmallPage = fullProfessionPage;
+            OperatingFloorPage = operatingFloorPage;
+        }
+
+        /// <summary>
+        /// 窗体初始化
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void Window_Loaded(object sender, RoutedEventArgs e)
+        {
+            BigPage = new FullProfessionPage(HomepageForm);
+
+            //长款
+            BigPage.Width = 1000;
+            BigPage.Height = 420;
+
+            //tree赋值
+            BigPage.tr_threemodel.ItemsSource = OperatingFloorPage.ArchOperaDatas;
+            BigPage.tr_threemode2.ItemsSource = OperatingFloorPage.StruOperaDatas;
+            BigPage.tr_threemode3.ItemsSource = OperatingFloorPage.WaterOperaDatas;
+            BigPage.tr_threemode4.ItemsSource = OperatingFloorPage.WarmOperaDatas;
+            BigPage.tr_threemode5.ItemsSource = OperatingFloorPage.EleOperaDatas;
+
+            //屏蔽点击事件
+            BigPage.tb_arch.IsHitTestVisible = false;
+            BigPage.tb_stru.IsHitTestVisible = false;
+            BigPage.tb_water.IsHitTestVisible = false;
+            BigPage.tb_warm.IsHitTestVisible = false;
+            BigPage.tb_ele.IsHitTestVisible = false;
+
+            // 创建新的列定义
+            ColumnDefinition colDef1 = new ColumnDefinition();
+            colDef1.Width = new GridLength(1, GridUnitType.Star);
+            ColumnDefinition colDef2 = new ColumnDefinition();
+            colDef2.Width = new GridLength(1, GridUnitType.Star);
+            ColumnDefinition colDef3 = new ColumnDefinition();
+            colDef3.Width = new GridLength(1, GridUnitType.Star);
+            ColumnDefinition colDef4 = new ColumnDefinition();
+            colDef4.Width = new GridLength(1, GridUnitType.Star);
+            ColumnDefinition colDef5 = new ColumnDefinition();
+            colDef5.Width = new GridLength(1, GridUnitType.Star);
+
+            // 清除旧的列定义
+            BigPage.gridName.ColumnDefinitions.Clear();
+            // 添加到Grid中
+            BigPage.gridName.ColumnDefinitions.Add(colDef1);
+            BigPage.gridName.ColumnDefinitions.Add(colDef2);
+            BigPage.gridName.ColumnDefinitions.Add(colDef3);
+            BigPage.gridName.ColumnDefinitions.Add(colDef4);
+            BigPage.gridName.ColumnDefinitions.Add(colDef5);
+
+            frame.Navigate(BigPage);
+        }
+
+        /// <summary>
+        /// 窗体关闭事件
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void Window_Closed(object sender, EventArgs e)
+        {
+            HomepageForm.Visibility = Visibility.Visible;
+        }
+
+        /// <summary>
+        /// 一键底图
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void Button_Click(object sender, RoutedEventArgs e)
+        {
+            string value = bt_ditu.Content.ToString();
+            
+            if (value.Contains("底图"))
+            {
+                SelectItemByClick(BigPage.tr_threemodel, false, "Visible");
+                bt_ditu.Content = "确定";
+            }
+            else
+            {
+                //选中的标高
+                Dictionary<string, List<OperatEntity>> archDatas = new Dictionary<string, List<OperatEntity>>();
+                foreach (OperatEntity operatEntity in BigPage.tr_threemodel.ItemsSource)
+                {
+                    //版本号
+                    foreach (var twoData in operatEntity.SubDatas)
+                    {
+                        //原图、对比图、治理图
+                        foreach (var threeData in twoData.SubDatas)
+                        {
+                            if (threeData.Node.Contains("治理"))
+                            {
+                                //整栋图、分层图
+                                foreach (var fourData in threeData.SubDatas)
+                                {
+                                    if (fourData.Node.Contains("分层"))
+                                    {
+                                        foreach (var fiveData in fourData.SubDatas)
+                                        {
+                                            if (archDatas.ContainsKey(fiveData.Node))
+                                            {
+                                                archDatas[fiveData.Node].AddRange(fiveData.SubDatas.Where(x => x.IsCheck).ToList());
+                                            }
+                                            else
+                                            {
+                                                archDatas.Add(fiveData.Node, fiveData.SubDatas.Where(x => x.IsCheck).ToList());
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+                SelectItemByClick(BigPage.tr_threemodel, false, "Collapsed");
+
+                //项目
+                foreach (OperatEntity firstData in BigPage.tr_threemode4.ItemsSource)
+                {
+                    //版本号
+                    foreach (var twoData in firstData.SubDatas)
+                    {
+                        //原图、对比图、治理图
+                        foreach (var threeData in twoData.SubDatas)
+                        {
+                            if (threeData.Node.Contains("治理"))
+                            {
+                                //整栋图、分层图
+                                foreach (var fourData in threeData.SubDatas)
+                                {
+                                    if (fourData.Node.Contains("分层"))
+                                    {
+                                        foreach (var fiveData in fourData.SubDatas)
+                                        {
+                                            List<OperatEntity> sameDatas = archDatas[fiveData.Node];
+                                            sameDatas.ForEach(x =>
+                                            {
+                                                OperatEntity operatEntity = new OperatEntity(x.Node, x.DrawPath, new ObservableCollection<OperatEntity>(), true);
+                                                operatEntity.isShow = "Collapsed";
+                                                operatEntity.isCheck = false;
+                                                fiveData.SubDatas.Add(operatEntity);
+                                            });
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+
+
+                bt_ditu.Content = "一键底图";
+            }
+        }
+
+        /// <summary>
+        /// 修改checkbox选中
+        /// </summary>
+        /// <param name="itemsControl"></param>
+        /// <param name="selData"></param>
+        /// <param name="isSelect"></param>
+        /// <param name="isSub"></param>
+        /// <returns></returns>
+        public TreeViewItem SelectItemByClick(ItemsControl itemsControl, bool isSelect, string isvisible, bool isSub = false)
+        {
+            foreach (object item in itemsControl.Items)
+            {
+                TreeViewItem currentItem = itemsControl.ItemContainerGenerator.ContainerFromItem(item) as TreeViewItem;
+                if (currentItem == null) continue;
+                OperatEntity testData = currentItem.DataContext as OperatEntity;
+
+                //if (testData.IsLayer)
+                //{
+                if (currentItem.IsExpanded)
+                {
+                    CheckBox checkBox = FindVisualChild(currentItem, "cb_Check");
+                    if (checkBox != null)
+                    {
+                        OperatEntity operatEntity = checkBox.DataContext as OperatEntity;
+
+                        if (operatEntity.IsLayer)
+                        {
+                            checkBox.IsChecked = isSelect;
+                            if (isvisible == "Visible")
+                            {
+                                checkBox.Visibility = Visibility.Visible;
+                            }
+                            else
+                            {
+                                checkBox.Visibility = Visibility.Collapsed;
+                            }
+                            checkBox.UpdateLayout();
+                        }
+                    }
+                    SelectItemByClick(currentItem, isSelect, isvisible, true);
+                }
+                else
+                {
+                    currentItem.IsExpanded = true;
+                    currentItem.UpdateLayout();
+
+                    CheckBox checkBox = FindVisualChild(currentItem, "cb_Check");
+                    if (checkBox != null)
+                    {
+                        OperatEntity operatEntity = checkBox.DataContext as OperatEntity;
+
+                        if (operatEntity.IsLayer)
+                        {
+
+                            checkBox.IsChecked = isSelect;
+                            if (isvisible == "Visible")
+                            {
+                                checkBox.Visibility = Visibility.Visible;
+                            }
+                            else
+                            {
+                                checkBox.Visibility = Visibility.Collapsed;
+                            }
+                            checkBox.UpdateLayout();
+                        }
+                    }
+                    SelectItemByClick(currentItem, isSelect, isvisible, true);
+                    currentItem.IsExpanded = false;
+                    currentItem.UpdateLayout();
+                }
+                //}
+                //else
+                //{
+                //    SelectItemByClick(currentItem, isSelect, isvisible);
+                //}
+
+
+
+            }
+
+            return null;
+        }
+
+        /// <summary>
+        /// 获取listview某一列子控件
+        /// </summary>
+        /// <param name="obj">控件</param>
+        /// <param name="name">指定名称</param>
+        /// <returns></returns>
+        private CheckBox FindVisualChild(DependencyObject obj, string name)
+        {
+            //无限寻找下一级
+            for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++)
+            {
+                DependencyObject child = VisualTreeHelper.GetChild(obj, i);
+                if (child != null && child is CheckBox text && text.Name == name) return text;
+                else
+                {
+                    CheckBox childOfChildren = FindVisualChild(child, name);
+                    if (childOfChildren != null) return childOfChildren;
+                }
+            }
+            return null;
+        }
+
+
+
+
+        /// <summary>
+        /// 修改选择框可见性
+        /// </summary>
+        public void SetShow(ObservableCollection<OperatEntity> operatEntities, string value)
+        {
+            foreach (var operatEntity in operatEntities)
+            {
+                if (operatEntity.IsLayer)
+                {
+                    operatEntity.IsShow = value;
+                }
+
+                SetShow(operatEntity.SubDatas, value);
+            }
+        }
+
+
+        /// <summary>
+        /// 一键落图
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void Button_Click_1(object sender, RoutedEventArgs e)
+        {
+            string value = bt_luotu.Content.ToString();
+
+            if (value.Contains("落图"))
+            {
+                SelectItemByClick(BigPage.tr_threemode4, false, "Visible");
+                bt_luotu.Content = "确定";
+            }
+            else
+            {
+                //选中的标高
+                Dictionary<string, List<OperatEntity>> archDatas = new Dictionary<string, List<OperatEntity>>();
+                foreach (OperatEntity operatEntity in BigPage.tr_threemode4.ItemsSource)
+                {
+                    //版本号
+                    foreach (var twoData in operatEntity.SubDatas)
+                    {
+                        //原图、对比图、治理图
+                        foreach (var threeData in twoData.SubDatas)
+                        {
+                            if (threeData.Node.Contains("治理"))
+                            {
+                                //整栋图、分层图
+                                foreach (var fourData in threeData.SubDatas)
+                                {
+                                    if (fourData.Node.Contains("分层"))
+                                    {
+                                        foreach (var fiveData in fourData.SubDatas)
+                                        {
+                                            if (archDatas.ContainsKey(fiveData.Node))
+                                            {
+                                                archDatas[fiveData.Node].AddRange(fiveData.SubDatas.Where(x => x.IsCheck).ToList());
+                                            }
+                                            else
+                                            {
+                                                archDatas.Add(fiveData.Node, fiveData.SubDatas.Where(x => x.IsCheck).ToList());
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+                SelectItemByClick(BigPage.tr_threemode4, false, "Collapsed");
+
+                //项目
+                foreach (OperatEntity firstData in BigPage.tr_threemodel.ItemsSource)
+                {
+                    //版本号
+                    foreach (var twoData in firstData.SubDatas)
+                    {
+                        //原图、对比图、治理图
+                        foreach (var threeData in twoData.SubDatas)
+                        {
+                            if (threeData.Node.Contains("治理"))
+                            {
+                                //整栋图、分层图
+                                foreach (var fourData in threeData.SubDatas)
+                                {
+                                    if (fourData.Node.Contains("分层"))
+                                    {
+                                        foreach (var fiveData in fourData.SubDatas)
+                                        {
+                                            List<OperatEntity> sameDatas = archDatas[fiveData.Node];
+                                            sameDatas.ForEach(x =>
+                                            {
+                                                OperatEntity operatEntity = new OperatEntity(x.Node, x.DrawPath, new ObservableCollection<OperatEntity>(), true);
+                                                operatEntity.isShow = "Collapsed";
+                                                operatEntity.isCheck = false;
+                                                fiveData.SubDatas.Add(operatEntity);
+                                            });
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+
+
+                bt_luotu.Content = "一键落图";
+            }
+        }
+    }
+}

+ 62 - 43
CollaborativePlatformMain/Form/FloorDrawingForm.xaml

@@ -7,50 +7,69 @@
         mc:Ignorable="d" Title="楼层管理器"  WindowStartupLocation="CenterScreen"
         SizeToContent="WidthAndHeight"  ResizeMode="NoResize" Loaded="Window_Loaded"
         Closed="Window_Closed">
-    <DockPanel>
-
-        <StackPanel Width="120" Height="400" >
-            <Border BorderBrush="Black"  BorderThickness="1"  Width="120" Height="400">
-
-                <ScrollViewer VerticalScrollBarVisibility="Auto" Padding="0,0,0,20" >
-                    <ItemsControl x:Name="sv_floor" >
-                        <ItemsControl.ItemsPanel>
-                            <ItemsPanelTemplate>
-                                <StackPanel/>
-                            </ItemsPanelTemplate>
-                        </ItemsControl.ItemsPanel>
-
-                        <ItemsControl.ItemTemplate>
-                            <DataTemplate>
-                                <StackPanel MouseDown="StackPanel_MouseDown" Margin="10,0,0,0">
-                                    <TextBlock Name="tb_name" Text="{Binding FuncitonName}" HorizontalAlignment="Center" />
-                                </StackPanel>
-                            </DataTemplate>
-                        </ItemsControl.ItemTemplate>
-                    </ItemsControl>
-                </ScrollViewer>
-            </Border>
-        </StackPanel>
 
-        <StackPanel Width="200" Height="400">
-            <ScrollViewer VerticalScrollBarVisibility="Auto" Padding="0,0,0,20">
-                <ItemsControl x:Name="sv_layer" >
-                    <ItemsControl.ItemsPanel>
-                        <ItemsPanelTemplate>
-                            <StackPanel/>
-                        </ItemsPanelTemplate>
-                    </ItemsControl.ItemsPanel>
-
-                    <ItemsControl.ItemTemplate>
-                        <DataTemplate>
-                            <StackPanel MouseDown="StackPanel_MouseDown" Margin="10,0,0,0">
-                                <TextBlock Name="tb_name" Text="{Binding FuncitonName}" HorizontalAlignment="Center" />
-                            </StackPanel>
-                        </DataTemplate>
-                    </ItemsControl.ItemTemplate>
-                </ItemsControl>
-            </ScrollViewer>
+    <StackPanel>
+
+        <DockPanel>
+
+            <StackPanel Width="80" Height="400" >
+                <Border BorderBrush="Black"  BorderThickness="1"  Width="80" Height="400">
+
+                    <ScrollViewer VerticalScrollBarVisibility="Auto" Padding="0,0,0,0" >
+                        <ItemsControl x:Name="sv_floor" >
+                            <ItemsControl.ItemsPanel>
+                                <ItemsPanelTemplate>
+                                    <StackPanel/>
+                                </ItemsPanelTemplate>
+                            </ItemsControl.ItemsPanel>
+
+                            <ItemsControl.ItemTemplate>
+                                <DataTemplate>
+                                    <StackPanel  Margin="0,10,0,0">
+                                        <TextBlock Name="tb_FloorName" Text="{Binding FloorName}" HorizontalAlignment="Center"
+                                               VerticalAlignment="Center" Width="80" TextAlignment="Center"
+                                               PreviewMouseLeftButtonDown="tb_FloorName_PreviewMouseLeftButtonDown"/>
+                                    </StackPanel>
+                                </DataTemplate>
+                            </ItemsControl.ItemTemplate>
+                        </ItemsControl>
+                    </ScrollViewer>
+
+                </Border>
+            </StackPanel>
+
+            <StackPanel Width="200" Height="400">
+
+                <Border BorderBrush="Black" BorderThickness="1"  Width="200" Height="400">
+                    <ScrollViewer VerticalScrollBarVisibility="Auto" Padding="0,0,0,0">
+                        <ItemsControl x:Name="sv_layer" >
+                            <ItemsControl.ItemsPanel>
+                                <ItemsPanelTemplate>
+                                    <StackPanel/>
+                                </ItemsPanelTemplate>
+                            </ItemsControl.ItemsPanel>
+
+                            <ItemsControl.ItemTemplate>
+                                <DataTemplate>
+                                    <StackPanel  Margin="5,5,0,0">
+                                        <TextBlock Name="tb_LayerName" Text="{Binding LayerName}" HorizontalAlignment="Center" 
+                                               VerticalAlignment="Center" Width="180"
+                                               PreviewMouseLeftButtonDown="tb_LayerName_PreviewMouseLeftButtonDown_1"/>
+                                    </StackPanel>
+                                </DataTemplate>
+                            </ItemsControl.ItemTemplate>
+                        </ItemsControl>
+                    </ScrollViewer>
+                </Border>
+
+            </StackPanel>
+
+        </DockPanel>
+
+        <StackPanel>
+            <Button Name="bt_determine" Width="280" Height="26" Content="确定" Margin="0,5,0,5" Click="bt_determine_Click"/>
         </StackPanel>
 
-    </DockPanel>
+
+    </StackPanel>
 </Window>

+ 96 - 6
CollaborativePlatformMain/Form/FloorDrawingForm.xaml.cs

@@ -1,4 +1,5 @@
-using System;
+using CollaborativePlatformMain.DFEntity;
+using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
@@ -20,11 +21,22 @@ namespace CollaborativePlatformMain.Form
     public partial class FloorDrawingForm : Window
     {
         /// <summary>
+        /// 父级窗体
+        /// </summary>
+        public UploadDrawingForm UploadDrawingForm;
+
+        /// <summary>
+        /// 窗体数据
+        /// </summary>
+        public List<FloorLayerData> FloorDatas = new List<FloorLayerData>();
+
+        /// <summary>
         /// 楼层管理器
         /// </summary>
-        public FloorDrawingForm()
+        public FloorDrawingForm(UploadDrawingForm uploadDrawingForm)
         {
             InitializeComponent();
+            UploadDrawingForm = uploadDrawingForm;
         }
 
         /// <summary>
@@ -34,15 +46,30 @@ namespace CollaborativePlatformMain.Form
         /// <param name="e"></param>
         private void Window_Loaded(object sender, RoutedEventArgs e)
         {
+            Dictionary<int, string> keyValuePairs = new Dictionary<int, string>();
+            keyValuePairs.Add(0, "墙体");
+            keyValuePairs.Add(1, "门窗");
+            keyValuePairs.Add(2, "房间标签");
+            keyValuePairs.Add(3, "车位");
 
-        }
+            int num = 1;
+            for (int i = 0; i < 5; i++)
+            {
+                List<FloorLayerData> layerDatas = new List<FloorLayerData>();
+                for (int j = 0; j < 4; j++)
+                {
+                    FloorLayerData layerData = new FloorLayerData(keyValuePairs[j]);
+                    layerDatas.Add(layerData);
+                    num++;
+                }
 
-        private void StackPanel_MouseDown(object sender, MouseButtonEventArgs e)
-        {
+                FloorDatas.Add(new FloorLayerData("F" + i, layerDatas));
+            }
 
+            sv_floor.ItemsSource = null;
+            sv_floor.ItemsSource = FloorDatas;
         }
 
-     
         /// <summary>
         /// 窗体关闭事件
         /// </summary>
@@ -50,7 +77,70 @@ namespace CollaborativePlatformMain.Form
         /// <param name="e"></param>
         private void Window_Closed(object sender, EventArgs e)
         {
+            UploadDrawingForm.Visibility = Visibility.Visible;
+        }
+
+        /// <summary>
+        /// 楼层鼠标点击事件
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void tb_FloorName_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
+        {
+            TextBlock textBlock = sender as TextBlock;
+            if (textBlock == null) return;
+            FloorLayerData floorLayerData = textBlock.DataContext as FloorLayerData;
+            if (floorLayerData == null) return;
+
+            sv_layer.ItemsSource = null;
+            sv_layer.ItemsSource = floorLayerData.SubDatas;
+        }
+
+        /// <summary>
+        /// 图层鼠标点击事件
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+
+        private void tb_LayerName_PreviewMouseLeftButtonDown_1(object sender, MouseButtonEventArgs e)
+        {
+
+        }
+
+        /// <summary>
+        /// 确定事件
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void bt_determine_Click(object sender, RoutedEventArgs e)
+        {
+            UploadDrawingForm.ArchLayerDatas = FloorDatas;
+            UploadDrawingForm.bt_xaunze.Background = Brushes.Green;
+
+            Dictionary<int, string> keyValuePairs = new Dictionary<int, string>();
+            keyValuePairs.Add(0, "风管");
+            keyValuePairs.Add(1, "风机");
+            keyValuePairs.Add(2, "风口");
+            keyValuePairs.Add(3, "水管");
+
+            List<FloorLayerData> warmDatas = new List<FloorLayerData>();
+            int num = 1;
+            for (int i = 0; i < 5; i++)
+            {
+                List<FloorLayerData> layerDatas = new List<FloorLayerData>();
+                for (int j = 0; j < 4; j++)
+                {
+                    FloorLayerData layerData = new FloorLayerData(keyValuePairs[j]);
+                    layerDatas.Add(layerData);
+                    num++;
+                }
+
+                warmDatas.Add(new FloorLayerData("F" + i, layerDatas));
+            }
+            UploadDrawingForm.WarmLayerDatas = warmDatas;
+
 
+            this.Close();
         }
     }
 }

+ 65 - 9
CollaborativePlatformMain/Form/HomepageForm.xaml.cs

@@ -39,6 +39,11 @@ namespace CollaborativePlatformMain.Form
         #region 最左边消息
 
         /// <summary>
+        /// 消息是否为初始化
+        /// </summary>
+        public bool IsSeconMessagePage = false;
+
+        /// <summary>
         /// 消息
         /// </summary>
         /// <param name="sender"></param>
@@ -53,15 +58,21 @@ namespace CollaborativePlatformMain.Form
             dp_gallery.Visibility = Visibility.Collapsed;
             dp_tools.Visibility = Visibility.Collapsed;
             dp_threetools.Visibility = Visibility.Collapsed;
-            seconMessagePage.Navigate(new SeconMessagePage(this));
+
+            if (!IsSeconMessagePage)
+            {
+                seconMessagePage.Navigate(new SeconMessagePage(this));
+                IsSeconMessagePage = true;
+            }
+           
 
             //SwitchMethod(sender as MenuItem, true);
         }
 
         /// <summary>
-        /// 项目下TreeView绑定的数据
+        /// 项目是否初始化
         /// </summary>
-        private List<TreeViewBind> treeViewBinds = new List<TreeViewBind>();
+        public bool IsSeconProjectPageShow = false;
 
         /// <summary>
         /// 项目
@@ -79,10 +90,19 @@ namespace CollaborativePlatformMain.Form
             dp_tools.Visibility = Visibility.Collapsed;
             dp_threetools.Visibility = Visibility.Collapsed;
 
-            seconProjectPage.Navigate(new SeconProjectPage());
+            if (!IsSeconProjectPageShow)
+            {
+                seconProjectPage.Navigate(new SeconProjectPage(this));
+                IsSeconProjectPageShow = true;
+            }
         }
 
         /// <summary>
+        /// 联系人是否初始化
+        /// </summary>
+        public bool IsSeconContactsPage = false;
+
+        /// <summary>
         /// 联系人
         /// </summary>
         /// <param name="sender"></param>
@@ -97,9 +117,20 @@ namespace CollaborativePlatformMain.Form
             dp_gallery.Visibility = Visibility.Visible;
             dp_tools.Visibility = Visibility.Collapsed;
             dp_threetools.Visibility = Visibility.Collapsed;
-            seconContactsPage.Navigate(new SeconContactsPage(this));
+
+            if (!IsSeconContactsPage)
+            {
+                seconContactsPage.Navigate(new SeconContactsPage(this));
+                IsSeconContactsPage = true;
+            }
         }
 
+
+        /// <summary>
+        /// 图库大样图是否初始化
+        /// </summary>
+        public bool IsSeconLegendPage = false;
+
         /// <summary>
         /// 图库大样图
         /// </summary>
@@ -115,10 +146,20 @@ namespace CollaborativePlatformMain.Form
             dp_gallery.Visibility = Visibility.Visible;
             dp_tools.Visibility = Visibility.Collapsed;
             dp_threetools.Visibility = Visibility.Collapsed;
-            seconLegendPage.Navigate(new SeconLegendPage());
+
+            if (!IsSeconLegendPage)
+            {
+                seconLegendPage.Navigate(new SeconLegendPage());
+                IsSeconLegendPage = true;
+            }
         }
 
         /// <summary>
+        /// 工具库是否初始化
+        /// </summary>
+        public bool IsSeconToolLibraryPage = false;
+
+        /// <summary>
         /// 工具库
         /// </summary>
         /// <param name="sender"></param>
@@ -133,10 +174,20 @@ namespace CollaborativePlatformMain.Form
             dp_gallery.Visibility = Visibility.Collapsed;
             dp_tools.Visibility = Visibility.Visible;
             dp_threetools.Visibility = Visibility.Collapsed;
-            seconToolsPage.Navigate(new SeconToolLibraryPage());
+
+            if (!IsSeconToolLibraryPage)
+            {
+                seconToolsPage.Navigate(new SeconToolLibraryPage());
+                IsSeconToolLibraryPage = true;
+            }
         }
 
         /// <summary>
+        /// 三维是否初始化
+        /// </summary>
+        public bool IsSeconThreeDimensionalPage = false;
+
+        /// <summary>
         /// 三维
         /// </summary>
         /// <param name="sender"></param>
@@ -151,7 +202,12 @@ namespace CollaborativePlatformMain.Form
             dp_gallery.Visibility = Visibility.Collapsed;
             dp_tools.Visibility = Visibility.Collapsed;
             dp_threetools.Visibility = Visibility.Visible;
-            seconThreeTools.Navigate(new SeconThreeDimensionalPage(this));
+            if (!IsSeconThreeDimensionalPage)
+            {
+                seconThreeTools.Navigate(new SeconThreeDimensionalPage(this));
+                IsSeconThreeDimensionalPage = true;
+            }
+           
         }
 
 
@@ -163,7 +219,7 @@ namespace CollaborativePlatformMain.Form
         public void ModifyBackground(MenuItem menuItem)
         {
             List<MenuItem> allMenuItems = CollaborationUtil.GetChildObjects<System.Windows.Controls.MenuItem>(mu_leftMenu);
-            foreach (var baseMenuItem  in allMenuItems)
+            foreach (var baseMenuItem in allMenuItems)
             {
                 if (baseMenuItem.Header.ToString() == menuItem.Header.ToString())
                 {

+ 108 - 0
CollaborativePlatformMain/Form/MessageSubPage/FullProfessionPage.xaml

@@ -0,0 +1,108 @@
+<Page x:Class="CollaborativePlatformMain.Form.MessageSubPage.FullProfessionPage"
+        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+        xmlns:local="clr-namespace:CollaborativePlatformMain.Form.MessageSubPage"
+        mc:Ignorable="d"
+        Title="FullProfessionPage">
+
+    <Grid Name="gridName">
+
+        <Grid.RowDefinitions>
+            <RowDefinition Height="1*"/>
+            <RowDefinition Height="9*"/>
+        </Grid.RowDefinitions>
+
+        <Grid.ColumnDefinitions>
+            <ColumnDefinition  Width="3*"/>
+            <ColumnDefinition  Width="1*"/>
+            <ColumnDefinition  Width="1*"/>
+            <ColumnDefinition  Width="1*"/>
+            <ColumnDefinition  Width="1*"/>
+        </Grid.ColumnDefinitions>
+
+
+        <TextBlock Name="tb_arch" Text="建筑" Grid.Column="0" Grid.Row="0" FontSize="20" HorizontalAlignment="Center" 
+                   PreviewMouseLeftButtonDown="tb_arch_PreviewMouseLeftButtonDown"/>
+        <TreeView x:Name="tr_threemodel" Grid.Column="0" Grid.Row="1"  ItemsSource="{Binding UpdateSourceTrigger=PropertyChanged}"
+                  PreviewMouseLeftButtonUp="tr_threemodel_PreviewMouseLeftButtonUp">
+            <TreeView.ItemTemplate>
+                <HierarchicalDataTemplate ItemsSource="{Binding SubDatas,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}">
+                    <DockPanel>
+                        <CheckBox Name="cb_Check" Visibility="{Binding IsShow ,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
+                                  IsChecked="{Binding IsCheck,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/>
+                        <Label Content="{Binding Node,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
+                               Background="Transparent" BorderThickness="0"  HorizontalAlignment="Left" />
+                    </DockPanel>
+                </HierarchicalDataTemplate>
+            </TreeView.ItemTemplate>
+        </TreeView>
+
+        <TextBlock Name="tb_stru" Text="结构"  Grid.Column="1" Grid.Row="0"  FontSize="20"  HorizontalAlignment="Center"
+                   PreviewMouseLeftButtonDown="tb_stru_PreviewMouseLeftButtonDown"/>
+        <TreeView x:Name="tr_threemode2" Grid.Column="1" Grid.Row="1" ItemsSource="{Binding UpdateSourceTrigger=PropertyChanged}"
+                  PreviewMouseLeftButtonUp="tr_threemodel_PreviewMouseLeftButtonUp">
+            <TreeView.ItemTemplate>
+                <HierarchicalDataTemplate ItemsSource="{Binding SubDatas,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}">
+                    <DockPanel>
+                        <CheckBox Name="cb_Check" Visibility="{Binding IsShow,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
+                                  IsChecked="{Binding IsCheck,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/>
+                        <Label Content="{Binding Node,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" 
+                               Background="Transparent" BorderThickness="0" HorizontalAlignment="Left" />
+                    </DockPanel>
+                </HierarchicalDataTemplate>
+            </TreeView.ItemTemplate>
+        </TreeView>
+
+        <TextBlock Name="tb_water" Text="给排水"  Grid.Column="2" Grid.Row="0"  FontSize="20" HorizontalAlignment="Center" 
+                   PreviewMouseLeftButtonDown="tb_water_PreviewMouseLeftButtonDown" />
+        <TreeView x:Name="tr_threemode3" Grid.Column="2" Grid.Row="1"  ItemsSource="{Binding UpdateSourceTrigger=PropertyChanged}"
+                  PreviewMouseLeftButtonUp="tr_threemodel_PreviewMouseLeftButtonUp" >
+            <TreeView.ItemTemplate>
+                <HierarchicalDataTemplate ItemsSource="{Binding SubDatas,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}">
+                    <DockPanel>
+                        <CheckBox Name="cb_Check" Visibility="{Binding IsShow,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
+                                  IsChecked="{Binding IsCheck,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/>
+                        <Label Content="{Binding Node,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" 
+                               Background="Transparent" BorderThickness="0" HorizontalAlignment="Left" />
+                    </DockPanel>
+                </HierarchicalDataTemplate>
+            </TreeView.ItemTemplate>
+        </TreeView>
+
+        <TextBlock Name="tb_warm" Text="暖通"  Grid.Column="3" Grid.Row="0"  FontSize="20"  HorizontalAlignment="Center" 
+                   PreviewMouseLeftButtonDown="tb_warm_PreviewMouseLeftButtonDown" />
+        <TreeView x:Name="tr_threemode4" Grid.Column="3" Grid.Row="1"  ItemsSource="{Binding UpdateSourceTrigger=PropertyChanged}"
+                  PreviewMouseLeftButtonUp="tr_threemodel_PreviewMouseLeftButtonUp" >
+            <TreeView.ItemTemplate>
+                <HierarchicalDataTemplate ItemsSource="{Binding SubDatas,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}">
+                    <DockPanel>
+                        <CheckBox Name="cb_Check" Visibility="{Binding IsShow,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" 
+                                  IsChecked="{Binding IsCheck,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/>
+                        <Label Content="{Binding Node,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" 
+                               Background="Transparent" BorderThickness="0" HorizontalAlignment="Left" />
+                    </DockPanel>
+                </HierarchicalDataTemplate>
+            </TreeView.ItemTemplate>
+        </TreeView>
+
+        <TextBlock Name="tb_ele" Text="电气"  Grid.Column="4" Grid.Row="0"  FontSize="20" HorizontalAlignment="Center" 
+                   PreviewMouseLeftButtonDown="tb_ele_PreviewMouseLeftButtonDown"/>
+        <TreeView x:Name="tr_threemode5"  Grid.Column="4" Grid.Row="1"  ItemsSource="{Binding UpdateSourceTrigger=PropertyChanged}"
+                  PreviewMouseLeftButtonUp="tr_threemodel_PreviewMouseLeftButtonUp" >
+            <TreeView.ItemTemplate>
+                <HierarchicalDataTemplate ItemsSource="{Binding SubDatas,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}">
+                    <DockPanel>
+                        <CheckBox Name="cb_Check" Visibility="{Binding IsShow,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
+                                  IsChecked="{Binding IsCheck,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/>
+                        <Label Content="{Binding Node,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
+                               Background="Transparent" BorderThickness="0" HorizontalAlignment="Left" />
+                    </DockPanel>
+                </HierarchicalDataTemplate>
+            </TreeView.ItemTemplate>
+        </TreeView>
+
+    </Grid>
+
+</Page>

+ 193 - 0
CollaborativePlatformMain/Form/MessageSubPage/FullProfessionPage.xaml.cs

@@ -0,0 +1,193 @@
+using CollaborativePlatformMain.DFEntity.MessageSubUtil;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Shapes;
+
+namespace CollaborativePlatformMain.Form.MessageSubPage
+{
+    /// <summary>
+    /// FullProfessionPage.xaml 的交互逻辑
+    /// </summary>
+    public partial class FullProfessionPage : Page
+    {
+        /// <summary>
+        /// 父级窗体
+        /// </summary>
+        public HomepageForm HomepageForm;
+
+        public FullProfessionPage(HomepageForm homepageForm)
+        {
+            InitializeComponent();
+            HomepageForm = homepageForm;
+        }
+
+        private void tr_threemodel_PreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
+        {
+            int a = 1;
+        }
+
+        /// <summary>
+        /// 建筑-鼠标点击事件
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void tb_arch_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
+        {
+            // 创建新的列定义
+            ColumnDefinition colDef1 = new ColumnDefinition();
+            colDef1.Width = new GridLength(3, GridUnitType.Star);
+            ColumnDefinition colDef2 = new ColumnDefinition();
+            colDef2.Width = new GridLength(1, GridUnitType.Star);
+            ColumnDefinition colDef3 = new ColumnDefinition();
+            colDef3.Width = new GridLength(1, GridUnitType.Star);
+            ColumnDefinition colDef4 = new ColumnDefinition();
+            colDef4.Width = new GridLength(1, GridUnitType.Star);
+            ColumnDefinition colDef5 = new ColumnDefinition();
+            colDef5.Width = new GridLength(1, GridUnitType.Star);
+
+            // 清除旧的列定义
+            gridName.ColumnDefinitions.Clear();
+            // 添加到Grid中
+            gridName.ColumnDefinitions.Add(colDef1);
+            gridName.ColumnDefinitions.Add(colDef2);
+            gridName.ColumnDefinitions.Add(colDef3);
+            gridName.ColumnDefinitions.Add(colDef4);
+            gridName.ColumnDefinitions.Add(colDef5);
+        }
+
+        /// <summary>
+        /// 结构-鼠标点击事件
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void tb_stru_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
+        {
+            // 创建新的列定义
+            ColumnDefinition colDef1 = new ColumnDefinition();
+            colDef1.Width = new GridLength(1, GridUnitType.Star);
+            ColumnDefinition colDef2 = new ColumnDefinition();
+            colDef2.Width = new GridLength(3, GridUnitType.Star);
+            ColumnDefinition colDef3 = new ColumnDefinition();
+            colDef3.Width = new GridLength(1, GridUnitType.Star);
+            ColumnDefinition colDef4 = new ColumnDefinition();
+            colDef4.Width = new GridLength(1, GridUnitType.Star);
+            ColumnDefinition colDef5 = new ColumnDefinition();
+            colDef5.Width = new GridLength(1, GridUnitType.Star);
+
+            // 清除旧的列定义
+            gridName.ColumnDefinitions.Clear();
+            // 添加到Grid中
+            gridName.ColumnDefinitions.Add(colDef1);
+            gridName.ColumnDefinitions.Add(colDef2);
+            gridName.ColumnDefinitions.Add(colDef3);
+            gridName.ColumnDefinitions.Add(colDef4);
+            gridName.ColumnDefinitions.Add(colDef5);
+        }
+
+        /// <summary>
+        /// 给排水-鼠标点击事件
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void tb_water_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
+        {
+            // 创建新的列定义
+            ColumnDefinition colDef1 = new ColumnDefinition();
+            colDef1.Width = new GridLength(1, GridUnitType.Star);
+            ColumnDefinition colDef2 = new ColumnDefinition();
+            colDef2.Width = new GridLength(1, GridUnitType.Star);
+            ColumnDefinition colDef3 = new ColumnDefinition();
+            colDef3.Width = new GridLength(3, GridUnitType.Star);
+            ColumnDefinition colDef4 = new ColumnDefinition();
+            colDef4.Width = new GridLength(1, GridUnitType.Star);
+            ColumnDefinition colDef5 = new ColumnDefinition();
+            colDef5.Width = new GridLength(1, GridUnitType.Star);
+
+            // 清除旧的列定义
+            gridName.ColumnDefinitions.Clear();
+            // 添加到Grid中
+            gridName.ColumnDefinitions.Add(colDef1);
+            gridName.ColumnDefinitions.Add(colDef2);
+            gridName.ColumnDefinitions.Add(colDef3);
+            gridName.ColumnDefinitions.Add(colDef4);
+            gridName.ColumnDefinitions.Add(colDef5);
+        }
+
+        /// <summary>
+        /// 暖通-鼠标点击事件
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void tb_warm_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
+        {
+            // 创建新的列定义
+            ColumnDefinition colDef1 = new ColumnDefinition();
+            colDef1.Width = new GridLength(1, GridUnitType.Star);
+            ColumnDefinition colDef2 = new ColumnDefinition();
+            colDef2.Width = new GridLength(1, GridUnitType.Star);
+            ColumnDefinition colDef3 = new ColumnDefinition();
+            colDef3.Width = new GridLength(1, GridUnitType.Star);
+            ColumnDefinition colDef4 = new ColumnDefinition();
+            colDef4.Width = new GridLength(3, GridUnitType.Star);
+            ColumnDefinition colDef5 = new ColumnDefinition();
+            colDef5.Width = new GridLength(1, GridUnitType.Star);
+
+            // 清除旧的列定义
+            gridName.ColumnDefinitions.Clear();
+            // 添加到Grid中
+            gridName.ColumnDefinitions.Add(colDef1);
+            gridName.ColumnDefinitions.Add(colDef2);
+            gridName.ColumnDefinitions.Add(colDef3);
+            gridName.ColumnDefinitions.Add(colDef4);
+            gridName.ColumnDefinitions.Add(colDef5);
+        }
+
+        /// <summary>
+        /// 电气-鼠标点击事件
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void tb_ele_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
+        {
+            // 创建新的列定义
+            ColumnDefinition colDef1 = new ColumnDefinition();
+            colDef1.Width = new GridLength(1, GridUnitType.Star);
+            ColumnDefinition colDef2 = new ColumnDefinition();
+            colDef2.Width = new GridLength(1, GridUnitType.Star);
+            ColumnDefinition colDef3 = new ColumnDefinition();
+            colDef3.Width = new GridLength(1, GridUnitType.Star);
+            ColumnDefinition colDef4 = new ColumnDefinition();
+            colDef4.Width = new GridLength(1, GridUnitType.Star);
+            ColumnDefinition colDef5 = new ColumnDefinition();
+            colDef5.Width = new GridLength(3, GridUnitType.Star);
+
+            // 清除旧的列定义
+            gridName.ColumnDefinitions.Clear();
+            // 添加到Grid中
+            gridName.ColumnDefinitions.Add(colDef1);
+            gridName.ColumnDefinitions.Add(colDef2);
+            gridName.ColumnDefinitions.Add(colDef3);
+            gridName.ColumnDefinitions.Add(colDef4);
+            gridName.ColumnDefinitions.Add(colDef5);
+        }
+
+        /// <summary>
+        /// 点击事件
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void cb_Check_Checked(object sender, RoutedEventArgs e)
+        {
+        }
+    }
+}

+ 25 - 27
CollaborativePlatformMain/Form/MessageSubPage/Project/NewProjrctPage.xaml

@@ -8,7 +8,8 @@
         Title="NewProjrctPage" >
 
 
-    <StackPanel Name="sp_addPro"  Width="473" Margin="10 10 0 0">
+    <StackPanel Name="sp_addPro"  Width="483" Margin="10, 10 ,0, 0">
+
         <StackPanel x:Name="gd_top" Orientation="Horizontal">
             <TextBlock Text="完整的项目信息有助于为您推送规范条文" Margin="0,10,10,10" />
             <CheckBox Content="不再提醒" Click="close_Click" Margin="10" />
@@ -17,43 +18,40 @@
         <!--项目名称-->
         <DockPanel>
             <Label Width="80" FontSize="13" Margin="30 0 0 0" Content="项目名称:"  VerticalAlignment="Center"></Label>
-            <TextBox Width="150" Height="25" HorizontalAlignment="Left" Margin="30 0 0 0" x:Name="pro_Name" />
+            <TextBox Name="tb_projectName" Width="150" Height="25" HorizontalAlignment="Left" Margin="30 0 0 0"/>
         </DockPanel>
 
         <!--项目地址-->
         <DockPanel Margin="0 10 0 0">
-            <Label Width="80" FontSize="13" Margin="30 0 0 0" Content="项目名称:"  VerticalAlignment="Center"></Label>
-            <TextBox Width="150" Height="25" HorizontalAlignment="Left" Margin="30 0 0 0" x:Name="pro_status" />
+            <Label Width="80" FontSize="13" Margin="30 0 0 0" Content="项目业态:"  VerticalAlignment="Center"></Label>
+            <TextBox Name="tb_staus" Width="150" Height="25" HorizontalAlignment="Left" Margin="30 0 0 0" />
+        </DockPanel>
+
+        <!--项目地址-->
+        <DockPanel Margin="0 10 0 0">
+            <Label Width="80" FontSize="13" Margin="30 0 0 0" Content="项目地址:"  VerticalAlignment="Center"></Label>
+            <TextBox Name="tb_Path" Width="150" Height="25" HorizontalAlignment="Left" Margin="30 0 0 0" />
         </DockPanel>
 
 
-        <DockPanel Margin="0,10,0,0">
+        <StackPanel   Margin="0,10,0,0">
             <Label Content="设置楼栋名称" HorizontalAlignment="Left"/>
-            
-            <ItemsControl x:Name="sv_FlooName" >
-                <ItemsControl.ItemsPanel>
-                    <ItemsPanelTemplate>
-                        <WrapPanel/>
-                    </ItemsPanelTemplate>
-                </ItemsControl.ItemsPanel>
-
-                <ItemsControl.ItemTemplate>
-                    <DataTemplate>
-                        <StackPanel>
-                            <TextBox Name="lb_legendName" Text="{Binding Name}" BorderThickness="0" />
-                        </StackPanel>
-                    </DataTemplate>
-                </ItemsControl.ItemTemplate>
-            </ItemsControl>
-        </DockPanel>
 
-        <DockPanel Margin="0,10,0,0">
-            <Label Content="楼栋名称:" Margin="30,0,0,0"/>
-            <TextBox Name="tb_floorName" Text="" Width="100"  />
-            <Button Content="新增" Width="100" HorizontalAlignment="Left"/>
-        </DockPanel>
+            <StackPanel Name="sp_buildNames">
+                <DockPanel HorizontalAlignment="Left"   Margin="30,10,0,0">
+                    <TextBox Text="楼栋1" Width="100"/>
+                </DockPanel>
+            </StackPanel>
+        </StackPanel>
 
+        <DockPanel Margin="30,10,0,0">
+            <TextBox Name="tb_buildName" Text="" Width="100"  />
+            <Button Name="bt_build" Content="添加楼栋" Width="100" HorizontalAlignment="Left" Click="bt_build_Click"/>
+        </DockPanel>
 
+        <DockPanel Margin="30,10,0,0">
+            <Button Name="bt_addPorject" Content="提交" Width="100" HorizontalAlignment="Left" Click="bt_addPorject_Click"/>
+        </DockPanel>
 
     </StackPanel>
 </Page>

+ 143 - 2
CollaborativePlatformMain/Form/MessageSubPage/Project/NewProjrctPage.xaml.cs

@@ -1,4 +1,5 @@
-using System;
+using CollaborativePlatformMain.DFEntity.MessageSubUtil;
+using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
@@ -19,14 +20,154 @@ namespace CollaborativePlatformMain.Form.MessageSubPage.Project
     /// </summary>
     public partial class NewProjrctPage : Page
     {
-        public NewProjrctPage()
+        /// <summary>
+        /// 父级窗体
+        /// </summary>
+        public SeconProjectPage SeconProjectPage;
+
+
+        public NewProjrctPage(SeconProjectPage seconProjectPage)
         {
             InitializeComponent();
+
+            SeconProjectPage = seconProjectPage;
         }
 
+        /// <summary>
+        /// 青蓝小助手提示关闭事件
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
         private void close_Click(object sender, RoutedEventArgs e)
         {
+            gd_top.Visibility = Visibility.Collapsed;
+        }
+
+
+        /// <summary>
+        /// 新增楼栋
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void bt_build_Click(object sender, RoutedEventArgs e)
+        {
+            string buildName = tb_buildName.Text.ToString();
+            if (buildName == null || buildName == "")
+            {
+                MessageBox.Show("请输入新增楼栋名称");
+                return;
+            }
+
+            TextBox textBox = new TextBox();
+            textBox.Width = 100;
+            textBox.Text = buildName;
+
+            DockPanel dockPanel = new DockPanel();
+            dockPanel.Margin = new Thickness(30, 10, 0, 0);
+            dockPanel.HorizontalAlignment = HorizontalAlignment.Left;
+            dockPanel.Children.Add(textBox);
 
+            sp_buildNames.Children.Add(dockPanel);
+
+            tb_buildName.Text = "";
         }
+
+        /// <summary>
+        /// 提交项目
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void bt_addPorject_Click(object sender, RoutedEventArgs e)
+        {
+            //项目名称
+            string projectName = tb_projectName.Text.ToString();
+            if (projectName == null || projectName == "")
+            {
+                MessageBox.Show("请输入项目名称");
+                return;
+            }
+
+            //项目业态
+            string businessName = tb_staus.Text.ToString();
+            if (businessName == null || businessName == "")
+            {
+                MessageBox.Show("请输入项目业态");
+                return;
+            }
+
+            //项目地址
+            string pathName = tb_Path.Text.ToString();
+            if (pathName == null || pathName == "")
+            {
+                MessageBox.Show("请输入项目地址");
+                return;
+            }
+
+
+            //楼栋名称
+            BuildNames = new List<string>();
+            GetBuildNames(sp_buildNames);
+
+            //项目信息
+            ProjectEntity projectEntity = new ProjectEntity(projectName, businessName, pathName);
+
+            List<ProjectEntity> buildDatas = new List<ProjectEntity>();
+            foreach (var buildName in BuildNames)
+            {
+                //项目信息
+                ProjectEntity subData1 = new ProjectEntity("项目信息", projectEntity);
+
+                //团队成员
+                Dictionary<string, string> keyValuePairs = new Dictionary<string, string>();
+                keyValuePairs.Add("主管", "");
+                keyValuePairs.Add("建筑", "");
+                keyValuePairs.Add("结构", "");
+                keyValuePairs.Add("给排水", "");
+                keyValuePairs.Add("暖通", "");
+                keyValuePairs.Add("电气", "");
+                ProjectEntity subData2 = new ProjectEntity("团队成员", keyValuePairs);
+
+                //工作台
+                OperatingFloorData operatingFloorData = new OperatingFloorData(projectName);
+                ProjectEntity subData3 = new ProjectEntity("工作台", operatingFloorData);
+
+
+                //自定义
+                ProjectEntity subData4 = new ProjectEntity("自定义", new List<ProjectEntity>());
+
+                //添加数据
+                buildDatas.Add(new ProjectEntity(buildName, new List<ProjectEntity>() { subData1, subData2, subData3, subData4 }));
+            }
+
+            ProjectEntity projectInfo = new ProjectEntity(projectName, buildDatas);
+
+            SeconProjectPage.ProjectEntities.Add(projectInfo);
+            SeconProjectPage.FlushData();
+        }
+
+
+        /// <summary>
+        /// 所有的楼栋名称
+        /// </summary>
+        public List<string> BuildNames = new List<string>();
+
+        /// <summary>
+        /// 获取所有的楼栋名称
+        /// </summary>
+        /// <param name="obj"></param>
+        public void GetBuildNames(DependencyObject obj)
+        {
+            for (int i = 0; i <= VisualTreeHelper.GetChildrenCount(obj) - 1; i++)
+            {
+                DependencyObject child = VisualTreeHelper.GetChild(obj, i);
+
+                if (child is TextBox textBox)
+                {
+                    BuildNames.Add(textBox.Text.ToString());
+                }
+                GetBuildNames(child);
+            }
+        }
+
     }
 }

+ 44 - 0
CollaborativePlatformMain/Form/MessageSubPage/Project/OperatingFloorPage.xaml

@@ -0,0 +1,44 @@
+<Page x:Class="CollaborativePlatformMain.Form.MessageSubPage.Project.OperatingFloorPage"
+        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+        xmlns:local="clr-namespace:CollaborativePlatformMain.Form.MessageSubPage.Project"
+        mc:Ignorable="d" Loaded="Page_Loaded"
+        Title="OperatingFloorPage" Width="483" Height="430">
+    <StackPanel>
+
+        <DockPanel HorizontalAlignment="Center" Height="30">
+            <TextBlock Text="本专业" FontSize="20" HorizontalAlignment="Center" VerticalAlignment="Center" PreviewMouseLeftButtonUp="pre_Click" />
+            <TextBlock Text="/" Margin="0,0,0,0" FontSize="20" VerticalAlignment="Center" />
+            <TextBlock Text="全专业" Margin="0,0,0,0" FontSize="20" VerticalAlignment="Center" PreviewMouseLeftButtonUp="all_Click" />
+        </DockPanel>
+
+
+        <StackPanel Name="sp_Single" Visibility="Visible">
+
+            <TreeView x:Name="tr_threemodel" PreviewMouseLeftButtonUp="tr_threemodel_PreviewMouseLeftButtonUp"
+                                  Width="483" Height="370" HorizontalAlignment="Left" >
+                <TreeView.ItemTemplate>
+                    <HierarchicalDataTemplate ItemsSource="{Binding SubDatas}">
+                        <Label Content="{Binding Node}"  BorderThickness="0" Background="Transparent"  HorizontalAlignment="Left"/>
+                    </HierarchicalDataTemplate>
+                </TreeView.ItemTemplate>
+            </TreeView>
+
+            <Button Name="bt_Upload" Content="上传图纸" Click="bt_Upload_Click" HorizontalAlignment="Left" Margin="10,0,0,0"/>
+        </StackPanel>
+
+
+        <StackPanel Name="sp_AllSingle">
+            <Frame Name="frame_FullProdess" NavigationUIVisibility="Hidden"/>
+            <Button Name="bt_openBig" Content="放大" Margin="0,0,0,10" Click="bt_openBig_Click" HorizontalAlignment="Right"/>
+
+        </StackPanel>
+        
+        
+        
+        
+        
+    </StackPanel>
+</Page>

+ 186 - 0
CollaborativePlatformMain/Form/MessageSubPage/Project/OperatingFloorPage.xaml.cs

@@ -0,0 +1,186 @@
+using CollaborativePlatformMain.DFEntity.MessageSubUtil;
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Shapes;
+
+namespace CollaborativePlatformMain.Form.MessageSubPage.Project
+{
+    /// <summary>
+    /// OperatingFloorPage.xaml 的交互逻辑
+    /// </summary>
+    public partial class OperatingFloorPage : Page
+    {
+        /// <summary>
+        /// 父级窗体
+        /// </summary>
+        public HomepageForm HomepageForm;
+
+        /// <summary>
+        /// 第一层级
+        /// </summary>
+        public static string FirstData = "";
+
+        /// <summary>
+        /// 是否第一次展示窗体
+        /// </summary>
+        public static bool IsFirstShow = false;
+
+        public OperatingFloorPage(HomepageForm homepageForm, string firstData, bool isFirstShow)
+        {
+            InitializeComponent();
+            HomepageForm = homepageForm;
+            FirstData = firstData;
+            IsFirstShow = isFirstShow;
+        }
+
+        /// <summary>
+        /// 建筑展示数据
+        /// </summary>
+        public ObservableCollection<OperatEntity> ArchOperaDatas = new ObservableCollection<OperatEntity>();
+
+        /// <summary>
+        /// 结构展示数据
+        /// </summary>
+        public ObservableCollection<OperatEntity> StruOperaDatas = new ObservableCollection<OperatEntity>();
+
+        /// <summary>
+        /// 给排水展示数据
+        /// </summary>
+        public ObservableCollection<OperatEntity> WaterOperaDatas = new ObservableCollection<OperatEntity>();
+
+        /// <summary>
+        /// 暖通展示数据
+        /// </summary>
+        public ObservableCollection<OperatEntity> WarmOperaDatas = new ObservableCollection<OperatEntity>();
+
+        /// <summary>
+        /// 电气展示数据
+        /// </summary>
+        public ObservableCollection<OperatEntity> EleOperaDatas = new ObservableCollection<OperatEntity>();
+
+
+        /// <summary>
+        /// 全专业窗体
+        /// </summary>
+        public FullProfessionPage FullProfessionPage;
+
+        /// <summary>
+        /// 窗体初始化
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void Page_Loaded(object sender, RoutedEventArgs e)
+        {
+            if (IsFirstShow)
+            {
+                ArchOperaDatas = new ObservableCollection<OperatEntity>();
+                OperatEntity operatEntity = new OperatEntity(FirstData, "", new ObservableCollection<OperatEntity>(), false);
+                ArchOperaDatas.Add(operatEntity);
+
+                WarmOperaDatas = new ObservableCollection<OperatEntity>();
+                operatEntity = new OperatEntity(FirstData, "", new ObservableCollection<OperatEntity>(), false);
+                WarmOperaDatas.Add(operatEntity);
+
+                tr_threemodel.ItemsSource = null;
+                tr_threemodel.ItemsSource = ArchOperaDatas;
+
+                IsFirstShow = false;
+            }
+
+            FullProfessionPage = new FullProfessionPage(HomepageForm);
+            FullProfessionPage.Width = 483;
+            FullProfessionPage.Height = 370;
+            frame_FullProdess.Navigate(FullProfessionPage);
+        }
+
+        private void tr_threemodel_PreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
+        {
+
+        }
+
+        private void Button_Click(object sender, RoutedEventArgs e)
+        {
+
+        }
+
+        /// <summary>
+        /// 本专业
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void pre_Click(object sender, MouseButtonEventArgs e)
+        {
+            sp_Single.Visibility = Visibility.Visible;
+            sp_AllSingle.Visibility = Visibility.Collapsed;
+        }
+
+
+        /// <summary>
+        /// 全专业
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void all_Click(object sender, MouseButtonEventArgs e)
+        {
+            sp_Single.Visibility = Visibility.Collapsed;
+            sp_AllSingle.Visibility = Visibility.Visible;
+        }
+
+
+        /// <summary>
+        /// 上传图纸
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void bt_Upload_Click(object sender, RoutedEventArgs e)
+        {
+            Button button = sender as Button;
+            if (button.Content.ToString().Contains("上传"))
+            {
+                UploadDrawingForm uploadDrawingForm = new UploadDrawingForm(this, false);
+                uploadDrawingForm.Show();
+                button.Content = "更新图纸";
+            }
+            else
+            {
+                UploadDrawingForm uploadDrawingForm = new UploadDrawingForm(this, true);
+                uploadDrawingForm.Show();
+            }
+        }
+
+        /// <summary>
+        /// 更新数据
+        /// </summary>
+        public void ReplaceData()
+        {
+            tr_threemodel.ItemsSource = null;
+            tr_threemodel.ItemsSource = ArchOperaDatas;
+
+            FullProfessionPage.tr_threemodel.ItemsSource = ArchOperaDatas;
+        }
+
+        /// <summary>
+        /// 放大事件
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void bt_openBig_Click(object sender, RoutedEventArgs e)
+        {
+            BigFullProfessiongForm bigFullProfessiongForm = new BigFullProfessiongForm(HomepageForm, FullProfessionPage,this);
+            bigFullProfessiongForm.Show();
+
+            HomepageForm.Hide();
+        }
+    }
+}

+ 33 - 0
CollaborativePlatformMain/Form/MessageSubPage/Project/ProjectInfoPage.xaml

@@ -0,0 +1,33 @@
+<Page x:Class="CollaborativePlatformMain.Form.MessageSubPage.Project.ProjectInfoPage"
+        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+        xmlns:local="clr-namespace:CollaborativePlatformMain.Form.MessageSubPage.Project"
+        mc:Ignorable="d" Loaded="Page_Loaded"
+        Title="ProjectInfoPage" Width="483" Height="430">
+    <StackPanel>
+
+        <!--项目名称-->
+        <DockPanel Margin="10,10,0,0">
+            <TextBlock Text="项目名称:" VerticalAlignment="Center"/>
+            <TextBox Name="tb_name" Width="200" VerticalAlignment="Center" HorizontalAlignment="Left"/>
+            <!--<Button Name="bt_name" Content="修改" HorizontalAlignment="Left" Click="bt_name_Click"/>-->
+        </DockPanel>
+
+        <!--项目业态-->
+        <DockPanel Margin="10,10,0,0">
+            <TextBlock Text="项目业态:" VerticalAlignment="Center"/>
+            <TextBox Name="tb_Business" Width="200" VerticalAlignment="Center" HorizontalAlignment="Left"/>
+            <!--<Button Name="bt_Business" Content="修改" HorizontalAlignment="Left" Click="bt_Business_Click"/>-->
+        </DockPanel>
+
+        <!--项目地址-->
+        <DockPanel Margin="10,10,0,0">
+            <TextBlock Text="项目地址:" VerticalAlignment="Center"/>
+            <TextBox Name="tb_path" Width="200" VerticalAlignment="Center" HorizontalAlignment="Left"/>
+            <!--<Button Name="bt_path" Content="修改" HorizontalAlignment="Left" Click="bt_path_Click"/>-->
+        </DockPanel>
+
+    </StackPanel>
+</Page>

+ 76 - 0
CollaborativePlatformMain/Form/MessageSubPage/Project/ProjectInfoPage.xaml.cs

@@ -0,0 +1,76 @@
+using CollaborativePlatformMain.DFEntity.MessageSubUtil;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Shapes;
+
+namespace CollaborativePlatformMain.Form.MessageSubPage.Project
+{
+    /// <summary>
+    /// ProjectInfoPage.xaml 的交互逻辑
+    /// </summary>
+    public partial class ProjectInfoPage : Page
+    {
+        public ProjectEntity ProjectEntity;
+
+        public ProjectInfoPage(ProjectEntity projectEntity)
+        {
+            InitializeComponent();
+
+            ProjectEntity = projectEntity;
+        }
+
+        /// <summary>
+        /// 窗体初始化
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void Page_Loaded(object sender, RoutedEventArgs e)
+        {
+            tb_name.Text = ProjectEntity.ProjectName;
+            tb_Business.Text = ProjectEntity.BusinessName;
+            tb_path.Text = ProjectEntity.ProjectPath;
+
+        }
+
+
+        /// <summary>
+        /// 项目名称修改
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void bt_name_Click(object sender, RoutedEventArgs e)
+        {
+
+        }
+
+        /// <summary>
+        /// 项目业态修改
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void bt_Business_Click(object sender, RoutedEventArgs e)
+        {
+
+        }
+
+        /// <summary>
+        /// 项目地址修改
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void bt_path_Click(object sender, RoutedEventArgs e)
+        {
+
+        }
+    }
+}

+ 58 - 0
CollaborativePlatformMain/Form/MessageSubPage/Project/TempPage.xaml

@@ -0,0 +1,58 @@
+<Page x:Class="CollaborativePlatformMain.Form.MessageSubPage.Project.TempPage"
+        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+      xmlns:ucontrols="clr-namespace:CollaborativePlatformMain.Form.UserControlForm"
+        xmlns:local="clr-namespace:CollaborativePlatformMain.Form.MessageSubPage.Project"
+        
+        mc:Ignorable="d" Loaded="Page_Loaded"
+        Title="TempPage" Width="483" Height="430">
+
+    <StackPanel>
+
+        <StackPanel Name="sp_temps">
+
+            <DockPanel Margin="0,5,0,0">
+                <Label Content="主管:" Width="80" />
+                <TextBox Text="主管名字" Width="200" HorizontalAlignment="Left" Background="#eee"/>
+            </DockPanel>
+
+            <DockPanel Margin="0,5,0,0">
+                <Label Content="建筑:"  Width="80" />
+                <ucontrols:NativeCombox x:Name="cb_arch"  Width="200"  HorizontalAlignment="Left"/>
+            </DockPanel>
+
+            <DockPanel Margin="0,5,0,0">
+                <Label Content="结构:"   Width="80"/>
+                <ucontrols:NativeCombox x:Name="cb_stru"  Width="200"  HorizontalAlignment="Left"/>
+            </DockPanel>
+
+            <DockPanel Margin="0,5,0,0">
+                <Label Content="给排水:"  Width="80" />
+                <ucontrols:NativeCombox  x:Name="cb_water" Width="200"  HorizontalAlignment="Left"/>
+            </DockPanel>
+
+            <DockPanel Margin="0,5,0,0">
+                <Label Content="暖通:"  Width="80" />
+                <ucontrols:NativeCombox x:Name="cb_warm"  Width="200"  HorizontalAlignment="Left"/>
+            </DockPanel>
+
+            <DockPanel Margin="0,5,0,0">
+                <Label Content="电气:"  Width="80"/>
+                <ucontrols:NativeCombox x:Name="cb_ele"  Width="200"  HorizontalAlignment="Left"/>
+            </DockPanel>
+
+        </StackPanel>
+
+        <DockPanel Margin="0,10,0,0" HorizontalAlignment="Left">
+            <TextBox Name="tb_add" Width="80" Background="#eee"/>
+            <Button Name="bt_add" Content="新增专业" Click="bt_add_Click"/>
+        </DockPanel>
+
+
+
+
+
+    </StackPanel>
+</Page>

+ 128 - 0
CollaborativePlatformMain/Form/MessageSubPage/Project/TempPage.xaml.cs

@@ -0,0 +1,128 @@
+using CollaborativePlatformMain.DFEntity.MessageSubUtil;
+using CollaborativePlatformMain.Form.UserControlForm;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Shapes;
+
+namespace CollaborativePlatformMain.Form.MessageSubPage.Project
+{
+    /// <summary>
+    /// TempPage.xaml 的交互逻辑
+    /// </summary>
+    public partial class TempPage : Page
+    {
+        public List<NativeDataInfo> ArchUserDatas = new List<NativeDataInfo>();
+        public List<NativeDataInfo> StruUserDatas = new List<NativeDataInfo>();
+        public List<NativeDataInfo> WaterUserDatas = new List<NativeDataInfo>();
+        public List<NativeDataInfo> WarmUserDatas = new List<NativeDataInfo>();
+        public List<NativeDataInfo> EleUserDatas = new List<NativeDataInfo>();
+
+
+
+        public TempPage()
+        {
+            InitializeComponent();
+        }
+
+        /// <summary>
+        /// 窗体初始化
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void Page_Loaded(object sender, RoutedEventArgs e)
+        {
+            ArchUserDatas = new List<NativeDataInfo>();
+            StruUserDatas = new List<NativeDataInfo>();
+            WaterUserDatas = new List<NativeDataInfo>();
+            WarmUserDatas = new List<NativeDataInfo>();
+            EleUserDatas = new List<NativeDataInfo>();
+
+            ArchUserDatas.Add(new NativeDataInfo(Guid.NewGuid().ToString(), "伙计1"));
+            ArchUserDatas.Add(new NativeDataInfo(Guid.NewGuid().ToString(), "伙计2"));
+            ArchUserDatas.Add(new NativeDataInfo(Guid.NewGuid().ToString(), "伙计3"));
+            ArchUserDatas.Add(new NativeDataInfo(Guid.NewGuid().ToString(), "伙计4"));
+            ArchUserDatas.Add(new NativeDataInfo(Guid.NewGuid().ToString(), "伙计5"));
+
+            StruUserDatas.Add(new NativeDataInfo(Guid.NewGuid().ToString(), "伙计1"));
+            StruUserDatas.Add(new NativeDataInfo(Guid.NewGuid().ToString(), "伙计2"));
+            StruUserDatas.Add(new NativeDataInfo(Guid.NewGuid().ToString(), "伙计3"));
+            StruUserDatas.Add(new NativeDataInfo(Guid.NewGuid().ToString(), "伙计4"));
+            StruUserDatas.Add(new NativeDataInfo(Guid.NewGuid().ToString(), "伙计5"));
+
+
+            WaterUserDatas.Add(new NativeDataInfo(Guid.NewGuid().ToString(), "伙计1"));
+            WaterUserDatas.Add(new NativeDataInfo(Guid.NewGuid().ToString(), "伙计2"));
+            WaterUserDatas.Add(new NativeDataInfo(Guid.NewGuid().ToString(), "伙计3"));
+            WaterUserDatas.Add(new NativeDataInfo(Guid.NewGuid().ToString(), "伙计4"));
+            WaterUserDatas.Add(new NativeDataInfo(Guid.NewGuid().ToString(), "伙计5"));
+
+            WarmUserDatas.Add(new NativeDataInfo(Guid.NewGuid().ToString(), "伙计1"));
+            WarmUserDatas.Add(new NativeDataInfo(Guid.NewGuid().ToString(), "伙计2"));
+            WarmUserDatas.Add(new NativeDataInfo(Guid.NewGuid().ToString(), "伙计3"));
+            WarmUserDatas.Add(new NativeDataInfo(Guid.NewGuid().ToString(), "伙计4"));
+            WarmUserDatas.Add(new NativeDataInfo(Guid.NewGuid().ToString(), "伙计5"));
+
+            EleUserDatas.Add(new NativeDataInfo(Guid.NewGuid().ToString(), "伙计1"));
+            EleUserDatas.Add(new NativeDataInfo(Guid.NewGuid().ToString(), "伙计2"));
+            EleUserDatas.Add(new NativeDataInfo(Guid.NewGuid().ToString(), "伙计3"));
+            EleUserDatas.Add(new NativeDataInfo(Guid.NewGuid().ToString(), "伙计4"));
+            EleUserDatas.Add(new NativeDataInfo(Guid.NewGuid().ToString(), "伙计5"));
+
+            cb_arch.ItemsSource = ArchUserDatas;
+            cb_stru.ItemsSource = StruUserDatas;
+            cb_water.ItemsSource = WaterUserDatas;
+            cb_warm.ItemsSource = WarmUserDatas;
+            cb_ele.ItemsSource = EleUserDatas;
+        }
+
+        /// <summary>
+        /// 添加专业成员
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void bt_add_Click(object sender, RoutedEventArgs e)
+        {
+            string addValue = tb_add.Text.ToString();
+            if (addValue == null || addValue == "") return;
+
+            Label label = new Label();
+            label.Content = addValue;
+            label.Width = 80;
+            //label.Background= new SolidColorBrush((Color)ColorConverter.ConvertFromString("#eee"));
+
+            NativeCombox nativeCombox = new NativeCombox();
+            List<NativeDataInfo> nativeDataInfos = new List<NativeDataInfo>();
+            nativeDataInfos.Add(new NativeDataInfo(Guid.NewGuid().ToString(), "伙计1"));
+            nativeDataInfos.Add(new NativeDataInfo(Guid.NewGuid().ToString(), "伙计2"));
+            nativeDataInfos.Add(new NativeDataInfo(Guid.NewGuid().ToString(), "伙计3"));
+            nativeDataInfos.Add(new NativeDataInfo(Guid.NewGuid().ToString(), "伙计4"));
+            nativeDataInfos.Add(new NativeDataInfo(Guid.NewGuid().ToString(), "伙计5"));
+            nativeCombox.ItemsSource = nativeDataInfos;
+            nativeCombox.Width = 200;
+            nativeCombox.Background = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#eee"));
+            nativeCombox.HorizontalAlignment = HorizontalAlignment.Left;
+
+
+            DockPanel dockPanel = new DockPanel();
+            dockPanel.Children.Add(label);
+            dockPanel.Children.Add(nativeCombox);
+            dockPanel.Margin = new Thickness(0, 5, 0, 0);
+
+            sp_temps.Children.Add(dockPanel);
+
+            tb_add.Text = "";
+        }
+
+    }
+}

+ 22 - 9
CollaborativePlatformMain/Form/MessageSubPage/SeconProjectPage.xaml

@@ -15,29 +15,42 @@
             <TreeView x:Name="tr_vw"  Visibility="Visible" PreviewMouseLeftButtonUp="tv_projectLeftButtonUp"
                                   Width="180" Height="405"  HorizontalAlignment="Left" Background="WhiteSmoke">
                 <TreeView.ItemTemplate>
-                    <HierarchicalDataTemplate ItemsSource="{Binding Children}">
-                        <TextBlock Text="{Binding Name}" />
+                    <HierarchicalDataTemplate ItemsSource="{Binding SubBuildNodes}">
+                        <TextBlock Text="{Binding ProjectName}" />
                     </HierarchicalDataTemplate>
                 </TreeView.ItemTemplate>
             </TreeView>
         </StackPanel>
 
         <!--最右边-->
-        <StackPanel Name="sp_info" Width="483" Margin="0 10 0 0"
+        <StackPanel Name="sp_info" Width="483" Margin="0 0 0 0"
                     HorizontalAlignment="Left" Visibility="Visible">
 
-            <StackPanel  >
+            <!--新建项目-->
+            <StackPanel Name="sp_newProject" Visibility="Collapsed" >
                 <Frame Name="threeNewProject" NavigationUIVisibility="Hidden"/>
             </StackPanel>
 
-            <StackPanel>
-                
+            <!--项目信息-->
+            <StackPanel Name="sp_ProjectInfo" Visibility="Collapsed">
+                <Frame Name="threeProInfoPage" NavigationUIVisibility="Hidden"/>
             </StackPanel>
 
-            <StackPanel>
-                
+            <!--团队成员-->
+            <StackPanel Name="sp_temp" Visibility="Collapsed">
+                <Frame Name="threeTempPage" NavigationUIVisibility="Hidden"/>
             </StackPanel>
-            
+
+            <!--工作台-->
+            <StackPanel Name="sp_staging" Visibility="Collapsed">
+                <Frame Name="threeStagingPage" NavigationUIVisibility="Hidden"/>
+            </StackPanel>
+
+            <!--自定义-->
+            <StackPanel Name="sp_custom" Visibility="Collapsed">
+                <Frame Name="threeCustomPage" NavigationUIVisibility="Hidden"/>
+            </StackPanel>
+
         </StackPanel>
 
     </DockPanel>

+ 176 - 4
CollaborativePlatformMain/Form/MessageSubPage/SeconProjectPage.xaml.cs

@@ -1,4 +1,5 @@
-using CollaborativePlatformMain.Form.MessageSubPage.Project;
+using CollaborativePlatformMain.DFEntity.MessageSubUtil;
+using CollaborativePlatformMain.Form.MessageSubPage.Project;
 using System;
 using System.Collections.Generic;
 using System.Linq;
@@ -20,24 +21,195 @@ namespace CollaborativePlatformMain.Form.MessageSubPage
     /// </summary>
     public partial class SeconProjectPage : Page
     {
-        public SeconProjectPage()
+        /// <summary>
+        /// 父级窗体
+        /// </summary>
+        public HomepageForm HomepageForm;
+
+        /// <summary>
+        /// 项目信息
+        /// </summary>
+        public List<ProjectEntity> ProjectEntities = new List<ProjectEntity>();
+
+
+        public SeconProjectPage(HomepageForm homepageForm)
         {
             InitializeComponent();
+            HomepageForm = homepageForm;
         }
 
+        /// <summary>
+        /// 窗体初始化
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
         private void Window_Loaded(object sender, RoutedEventArgs e)
         {
-            threeNewProject.Navigate(new NewProjrctPage());
+
+        }
+
+
+
+        /// <summary>
+        /// 新增项目
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void bt_addPro(object sender, RoutedEventArgs e)
+        {
+            sp_newProject.Visibility = Visibility.Visible;
+            sp_ProjectInfo.Visibility = Visibility.Collapsed;
+            sp_temp.Visibility = Visibility.Collapsed;
+            sp_staging.Visibility = Visibility.Collapsed;
+            sp_custom.Visibility = Visibility.Collapsed;
+
+            threeNewProject.Navigate(new NewProjrctPage(this));
+        }
+
+        /// <summary>
+        /// 刷新数据
+        /// </summary>
+        public void FlushData()
+        {
+            tr_vw.ItemsSource = null;
+            tr_vw.ItemsSource = ProjectEntities;
         }
 
+
+        public Dictionary<string, Page> id_Pages = new Dictionary<string, Page>();
+
+
+        /// <summary>
+        /// treeview点击事件
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
         private void tv_projectLeftButtonUp(object sender, MouseButtonEventArgs e)
         {
+            ProjectEntity selData = tr_vw.SelectedItem as ProjectEntity;
+            if (selData == null) return;
+
+            string node = selData.ProjectName;
+            if (node == "项目信息")
+            {
+                sp_newProject.Visibility = Visibility.Collapsed;
+                sp_ProjectInfo.Visibility = Visibility.Visible;
+                sp_temp.Visibility = Visibility.Collapsed;
+                sp_staging.Visibility = Visibility.Collapsed;
+                sp_custom.Visibility = Visibility.Collapsed;
+
+                if (id_Pages.Where(x => x.Key == selData.Id).Count() == 0)
+                {
+                    ProjectInfoPage projectInfoPage = new ProjectInfoPage(selData.SubData);
+
+                    threeProInfoPage.Navigate(projectInfoPage);
+                    id_Pages.Add(selData.Id, projectInfoPage);
+                }
+                else
+                {
+                    threeProInfoPage.Navigate(id_Pages[selData.Id]);
+                }
+            }
+            else if (node == "团队成员")
+            {
+                sp_newProject.Visibility = Visibility.Collapsed;
+                sp_ProjectInfo.Visibility = Visibility.Collapsed;
+                sp_temp.Visibility = Visibility.Visible;
+                sp_staging.Visibility = Visibility.Collapsed;
+                sp_custom.Visibility = Visibility.Collapsed;
+
+
+                if (id_Pages.Where(x => x.Key == selData.Id).Count() == 0)
+                {
+                    TempPage tempPage = new TempPage();
+
+                    threeTempPage.Navigate(tempPage);
+                    id_Pages.Add(selData.Id, tempPage);
+                }
+                else
+                {
+                    threeTempPage.Navigate(id_Pages[selData.Id]);
+                }
+            }
+            else if (node == "工作台")
+            {
+                sp_newProject.Visibility = Visibility.Collapsed;
+                sp_ProjectInfo.Visibility = Visibility.Collapsed;
+                sp_temp.Visibility = Visibility.Collapsed;
+                sp_staging.Visibility = Visibility.Visible;
+                sp_custom.Visibility = Visibility.Collapsed;
+
+                if (id_Pages.Where(x => x.Key == selData.Id).Count() == 0)
+                {
+                    string firstData = "";
+                    GetFirstName(ProjectEntities, selData, ref firstData);
+
+                    OperatingFloorPage operatingFloorPage = new OperatingFloorPage(HomepageForm, firstData, true);
+
+                    threeStagingPage.Navigate(operatingFloorPage);
+                    id_Pages.Add(selData.Id, operatingFloorPage);
+                }
+                else
+                {
+                    threeStagingPage.Navigate(id_Pages[selData.Id]);
+                }
+            }
+            else if (node == "自定义")
+            {
+                sp_newProject.Visibility = Visibility.Collapsed;
+                sp_ProjectInfo.Visibility = Visibility.Collapsed;
+                sp_temp.Visibility = Visibility.Collapsed;
+                sp_staging.Visibility = Visibility.Collapsed;
+                sp_custom.Visibility = Visibility.Visible;
+
+                if (id_Pages.Where(x => x.Key == selData.Id).Count() == 0)
+                {
+                    //OperatingFloorPage operatingFloorPage = new OperatingFloorPage(Node);
+
+                    //threeCustomPage.Navigate(operatingFloorPage);
+                    //id_Pages.Add(selData.Id, operatingFloorPage);
+                }
+                else
+                {
+                    threeCustomPage.Navigate(id_Pages[selData.Id]);
+                }
+            }
 
         }
 
-        private void bt_addPro(object sender, RoutedEventArgs e)
+        /// <summary>
+        /// 获取当前选中的项目名称及楼栋名称
+        /// </summary>
+        /// <returns></returns>
+        public bool GetFirstName(List<ProjectEntity> projectEntities, ProjectEntity selData, ref string firstData)
         {
+            foreach (var project in projectEntities)
+            {
+                if (project.Id == selData.Id)
+                {
+                    return true;
+                }
+                else
+                {
+                    bool isSel = GetFirstName(project.SubBuildNodes, selData, ref firstData);
+                    if (isSel)
+                    {
+                        if (firstData == "")
+                        {
+                            firstData = project.ProjectName;
+                        }
+                        else
+                        {
+                            firstData = project.ProjectName + "  " + firstData;
+                        }
+                        return true;
+                    }
+                }
+            }
 
+            return false;
         }
+
+
     }
 }

+ 40 - 48
CollaborativePlatformMain/Form/UploadDrawingForm.xaml

@@ -4,63 +4,55 @@
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
         xmlns:local="clr-namespace:CollaborativePlatformMain.Form"
-       xmlns:HandyControl="clr-namespace:HandyControl.Controls;assembly=HandyControl"
-        xmlns:LayUI="clr-namespace:LayUI.Wpf.Controls;assembly=LayUI.Wpf"
+        xmlns:HandyControl="clr-namespace:HandyControl.Controls;assembly=HandyControl"
+        xmlns:ucontrols="clr-namespace:CollaborativePlatformMain.Form.UserControlForm"
         mc:Ignorable="d"
-        AllowsTransparency="True"
-        Background=" Transparent"
-        WindowStartupLocation="CenterScreen"
-        WindowStyle="None"
-        Title="" SizeToContent="WidthAndHeight" ResizeMode="NoResize">
-    <LayUI:LayTitleBar Background="{DynamicResource Blue}"   CornerRadius="10"
-                       WindowState="{Binding WindowState, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
-        <LayUI:LayTitleBar.Header>
-            <Border Height="35">
-                <DockPanel>
-                    <TextBlock Margin="10,0" HorizontalAlignment="Left" VerticalAlignment="Center" Foreground="White"
-                               Text="图纸上传" />
-                </DockPanel>
-            </Border>
-        </LayUI:LayTitleBar.Header>
-
-        <StackPanel Background="White">
-            <!--图纸名称-->
-            <DockPanel Margin="0 20 0 0" HorizontalAlignment="Left">
-                <LayUI:LayTextBlock  FontSize="15" Margin="20 0 0 0" Text="图纸名称:"  VerticalAlignment="Center" />
-
-                <LayUI:LayTextBox Name="tb_dwgName" LayUI:Watermark="" Margin="0 0 20 0" Height="20" HorizontalAlignment="Left" Width="200" />
+        WindowStartupLocation="CenterScreen" Loaded="Window_Loaded"
+        Title="图纸上传" SizeToContent="WidthAndHeight" ResizeMode="NoResize">
+
+    <StackPanel Background="White">
+        <!--图纸名称-->
+        <DockPanel Margin="0 20 0 0" HorizontalAlignment="Left">
+            <Label Margin="10 0 0 0" Content="版本名称:"  VerticalAlignment="Center" />
+            <TextBox Name="tb_dwgName" Margin="0 0 20 0" Height="20" HorizontalAlignment="Left" Width="200" />
+        </DockPanel>
+
+        <DockPanel Margin="0,10,0,0">
+            <Button Name="bt_xaunze" Content="选择上传图纸" Width="100" Click="bt_xaunze_Click" />
+        </DockPanel>
+
+        <StackPanel Name="sp_duibi" Visibility="Collapsed">
+
+            <!--是否与前版本对比-->
+            <DockPanel Margin="10 20 0 0" HorizontalAlignment="Left">
+                <Label  Content="是否与前版本对比:"  VerticalAlignment="Center" />
+                <RadioButton Content="是"  Click="ButtonBase_OnClick"/>
+                <RadioButton Content="否" IsChecked="True" Click="ButtonBase_OnClick" Margin="10 0 0 0" />
             </DockPanel>
 
-            <!--账户密码-->
-            <DockPanel Margin="0 20 0 0" HorizontalAlignment="Left">
-                <LayUI:LayTextBlock  FontSize="15" Margin="20 0 0 0" Text="是否与前版本对比:"  VerticalAlignment="Center" />
-
-                <RadioButton Content="是" IsChecked="True"  Click="ButtonBase_OnClick"/>
-                <RadioButton Content="否" Click="ButtonBase_OnClick" Margin="10 0 0 0" />
-            </DockPanel>
-
-            <StackPanel Name="sp_contrast"  Visibility="Visible">
-                <!--对比图纸-->
+            <StackPanel Name="sp_contrast"  Visibility="Collapsed">
+                <!--对比版本-->
                 <DockPanel Margin="0 20 0 0" HorizontalAlignment="Left">
-                    <LayUI:LayTextBlock  FontSize="15" Margin="35 0 0 0"  Text="对比图纸:"  VerticalAlignment="Center" />
-
-                    <LayUI:LayTextBox Name="tb_dwg2Name" LayUI:Watermark="" Height="20"  HorizontalAlignment="Left" Width="185" />
+                    <Label Margin="35 0 0 0"  Content="对比版本:"  VerticalAlignment="Center" />
+                    <ComboBox Name="cb_dwgName" SelectionChanged="cb_dwgName_SelectionChanged"  HorizontalAlignment="Left"  Width="175" />
                 </DockPanel>
-                <LayUI:LayTextBlock TextWrapping="Wrap"  Foreground="Blue" Width="270"  FontSize="15" Margin="35 10 0 0" Text="注:图纸对比时需对图纸数据进行治理,过程中可能需要人工干预,请关注运行 进展。"  VerticalAlignment="Center" />
-
                 <!--对比范围-->
                 <DockPanel Margin="0 20 0 0" HorizontalAlignment="Left">
-                    <LayUI:LayTextBlock  FontSize="15" Margin="35 0 0 0"  Text="对比范围:"  VerticalAlignment="Center" />
-                    <ComboBox Width="150" Name="cb_range"></ComboBox>
+                    <Label Margin="35 0 0 0"  Content="对比范围:"  VerticalAlignment="Center" />
+                    <ucontrols:NativeCombox x:Name="cb_floor"  Width="175"  HorizontalAlignment="Left"/>
                 </DockPanel>
-            </StackPanel>
 
-            <LayUI:LayTextBlock  FontSize="15" Margin="20 50 0 0"  Text="更新日志:"  VerticalAlignment="Center" />
-            <Border Height="100" Width="180" Margin="20 0 0 0">
-                <TextBox Height="100" Width="180" HorizontalAlignment="Left" TextWrapping="Wrap" Background="WhiteSmoke" />
-            </Border>
+                <TextBlock TextWrapping="Wrap"  Foreground="Blue" Width="270"   Margin="35 10 0 0" Text="注:图纸对比时需对图纸数据进行治理,过程中可能需要人工干预,请关注运行 进展。"  VerticalAlignment="Center" />
 
-            <Button Width="80" Margin="0 20 0 10" VerticalAlignment ="Bottom" Click="Button_Click" Content="上传" />
+            </StackPanel>
         </StackPanel>
-    </LayUI:LayTitleBar>
+
+        <StackPanel>
+            <Label  Margin="10 50 0 0"  Content="更新日志:" Width="80" HorizontalAlignment="Left" />
+            <RichTextBox Margin="60,5,0,0" Height="100" Width="180" FlowDirection="LeftToRight" HorizontalAlignment="Left" Background="WhiteSmoke" />
+        </StackPanel>
+
+
+        <Button Width="80" Margin="0 20 0 10" VerticalAlignment ="Bottom" Click="Button_Click" Content="上传" />
+    </StackPanel>
 </Window>

+ 208 - 13
CollaborativePlatformMain/Form/UploadDrawingForm.xaml.cs

@@ -1,4 +1,7 @@
 using CollaborativePlatformMain.DFEntity;
+using CollaborativePlatformMain.DFEntity.MessageSubUtil;
+using CollaborativePlatformMain.Form.MessageSubPage.Project;
+using CollaborativePlatformMain.Form.UserControlForm;
 using System;
 using System.Collections.Generic;
 using System.Collections.ObjectModel;
@@ -21,15 +24,64 @@ namespace CollaborativePlatformMain.Form
     /// </summary>
     public partial class UploadDrawingForm : Window
     {
-        private ObservableCollection<TreeViewBind> TreeViews = new ObservableCollection<TreeViewBind>();
+        /// <summary>
+        /// 父级窗体
+        /// </summary>
+        public OperatingFloorPage OperatingFloorPage;
 
-        public UploadDrawingForm(ObservableCollection<TreeViewBind> treeViews)
+
+        /// <summary>
+        /// 是否为更新图纸
+        /// </summary>
+        public bool IsRenew = false;
+
+        /// <summary>
+        /// 更新、上传图纸
+        /// </summary>
+        /// <param name="isRenew"></param>
+        public UploadDrawingForm(OperatingFloorPage operatingFloorPage, bool isRenew)
         {
             InitializeComponent();
-            cb_range.ItemsSource = new List<string> { "全图对比", "指定图层对比" };
-            TreeViews = treeViews;
+            OperatingFloorPage = operatingFloorPage;
+            IsRenew = isRenew;
+        }
+
+
+        /// <summary>
+        /// 窗体初始化
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void Window_Loaded(object sender, RoutedEventArgs e)
+        {
+            if (IsRenew)
+            {
+                sp_duibi.Visibility = Visibility.Visible;
+            }
+
+
+            #region 对比版本
+
+            ObservableCollection<OperatEntity> operatEntities = OperatingFloorPage.ArchOperaDatas;
+            //版本号
+            List<string> versions = new List<string>();
+            foreach (var operatEntity in operatEntities)
+            {
+                versions.AddRange(operatEntity.SubDatas.Select(x => x.Node));
+            }
+            cb_dwgName.ItemsSource = null;
+            cb_dwgName.ItemsSource = versions;
+
+
+            #endregion
+
         }
 
+        /// <summary>
+        /// 单选框点击事件
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
         private void ButtonBase_OnClick(object sender, RoutedEventArgs e)
         {
             RadioButton radioButton = sender as RadioButton;
@@ -45,24 +97,167 @@ namespace CollaborativePlatformMain.Form
 
         }
 
+        /// <summary>
+        /// 上传图纸
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void Button_Click(object sender, RoutedEventArgs e)
+        {
+            //List<OperatEntity> operatEntities = OperatingFloorPage.AllOperatDatas;
 
-        public List<string> str = new List<string>();
+            SetOPerData(ArchLayerDatas, ref OperatingFloorPage.ArchOperaDatas);
+            SetOPerData(WarmLayerDatas, ref OperatingFloorPage.WarmOperaDatas);
 
-        private void Button_Click(object sender, RoutedEventArgs e)
+            //更新数据
+            OperatingFloorPage.ReplaceData();
+
+
+            this.Close();
+        }
+
+        /// <summary>
+        /// 更换数据
+        /// </summary>
+        /// <param name="floorLayerDatas"></param>
+        /// <param name="operatEntities"></param>
+        public void SetOPerData(List<FloorLayerData> floorLayerDatas, ref ObservableCollection<OperatEntity> operatEntities)
         {
-            string name = tb_dwgName.Text;
-            string dbname = tb_dwg2Name.Text;
 
-            TreeViewBind treeViewBind = new TreeViewBind(name, new List<TreeViewBind>() { new TreeViewBind("原图纸"), new TreeViewBind(dbname + "对比图") });
+            //二级
+            ObservableCollection<OperatEntity> twoDatas = new ObservableCollection<OperatEntity>();
+            twoDatas.Add(new OperatEntity("原图纸", "", new ObservableCollection<OperatEntity>(), false));
 
-            for (int i = 0; i < TreeViews.Count; i++)
+            //对比图
+            if (IsRenew)
             {
-                if (TreeViews[i].Name.Equals("项目002"))
+                //对比版本
+                string banben = cb_dwgName.SelectedItem as string;
+
+                //选择的对比范围
+                List<NativeDataInfo> selNativeDatas = cb_floor.ItemsSource.Where(x => x.IsSelect).ToList();
+
+                ObservableCollection<OperatEntity> duibiDatas = new ObservableCollection<OperatEntity>();
+                foreach (var nativeDataInfo in selNativeDatas)
                 {
-                    TreeViews[i].Children.Add(treeViewBind);
+                    duibiDatas.Add(new OperatEntity(nativeDataInfo.Name, "", new ObservableCollection<OperatEntity>(), false));
                 }
+                twoDatas.Add(new OperatEntity("对比图-" + banben, "", duibiDatas, false));
             }
-            this.Close();
+
+            //三级
+            ObservableCollection<OperatEntity> threeDatas = new ObservableCollection<OperatEntity>();
+            threeDatas.Add(new OperatEntity("整栋图", "", new ObservableCollection<OperatEntity>(), false));
+
+            //四级
+            ObservableCollection<OperatEntity> fourDatas = new ObservableCollection<OperatEntity>();
+            foreach (var floorLayerData in floorLayerDatas)
+            {
+                //五级
+                ObservableCollection<OperatEntity> fiveDatas = new ObservableCollection<OperatEntity>();
+
+                List<FloorLayerData> layersDatas = floorLayerData.SubDatas;
+                foreach (var layerData in layersDatas)
+                {
+                    fiveDatas.Add(new OperatEntity(layerData.LayerName, "", new ObservableCollection<OperatEntity>(), true));
+                }
+
+                fourDatas.Add(new OperatEntity(floorLayerData.FloorName, "", fiveDatas, false));
+            }
+            threeDatas.Add(new OperatEntity("分层图", "", fourDatas, false));
+            twoDatas.Add(new OperatEntity("治理图纸", "", threeDatas, false));
+
+            OperatEntity firstData = new OperatEntity(tb_dwgName.Text.ToString(), "", twoDatas, false);
+
+            //添加数据
+            foreach (var operatEntity in operatEntities)
+            {
+                operatEntity.SubDatas.Add(firstData);
+                break;
+            }
+
+        }
+
+        /// <summary>
+        /// 窗体数据
+        /// </summary>
+        public List<FloorLayerData> ArchLayerDatas = new List<FloorLayerData>();
+        public List<FloorLayerData> StruLayerDatas = new List<FloorLayerData>();
+        public List<FloorLayerData> WaterLayerDatas = new List<FloorLayerData>();
+        public List<FloorLayerData> WarmLayerDatas = new List<FloorLayerData>();
+        public List<FloorLayerData> EleLayerDatas = new List<FloorLayerData>();
+
+        /// <summary>
+        /// 选择图纸
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void bt_xaunze_Click(object sender, RoutedEventArgs e)
+        {
+            FloorDrawingForm floorDrawingForm = new FloorDrawingForm(this);
+            floorDrawingForm.Show();
+
+            this.Hide();
+        }
+
+
+        /// <summary>
+        /// 对比版本改变事件
+        /// 目的:实时刷新对比范围
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void cb_dwgName_SelectionChanged(object sender, SelectionChangedEventArgs e)
+        {
+            //选中的对比版本
+            string selValue = cb_dwgName.SelectedItem.ToString();
+
+            //对比范围
+            List<string> floorValues = new List<string>();
+
+            bool isBreak = false;
+            ObservableCollection<OperatEntity> operatEntities = OperatingFloorPage.ArchOperaDatas;
+            foreach (var operatEntity in operatEntities)
+            {
+                //版本号
+                foreach (var twoData in operatEntity.SubDatas)
+                {
+                    if (twoData.Node == selValue)
+                    {
+                        //原图、对比图、治理图
+                        foreach (var threeData in twoData.SubDatas)
+                        {
+                            if (threeData.Node.Contains("治理"))
+                            {
+                                //整栋图、分层图
+                                foreach (var fourData in threeData.SubDatas)
+                                {
+                                    if (fourData.Node.Contains("分层"))
+                                    {
+                                        foreach (var fiveData in fourData.SubDatas)
+                                        {
+                                            floorValues.Add(fiveData.Node);
+                                        }
+                                    }
+                                }
+                            }
+                        }
+
+                        isBreak = true;
+                        break;
+                    }
+                }
+                if (isBreak) break;
+            }
+
+            //赋值
+            List<NativeDataInfo> nativeDataInfos = new List<NativeDataInfo>();
+            foreach (var floorValue in floorValues)
+            {
+                nativeDataInfos.Add(new NativeDataInfo(Guid.NewGuid().ToString(), floorValue));
+            }
+            cb_floor.ItemsSource = nativeDataInfos;
+
         }
     }
 }

+ 333 - 0
CollaborativePlatformMain/Form/UserControlForm/NativeCombox.xaml

@@ -0,0 +1,333 @@
+<UserControl x:Class="CollaborativePlatformMain.Form.UserControlForm.NativeCombox"
+        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+        xmlns:local="clr-namespace:CollaborativePlatformMain.Form.UserControlForm"
+        mc:Ignorable="d"
+        d:DesignHeight="30" d:DesignWidth="200">
+    <UserControl.Resources>
+        <LinearGradientBrush x:Key="NormalBrush" StartPoint="0,0" EndPoint="0,1">
+            <GradientBrush.GradientStops>
+                <GradientStopCollection>
+                    <GradientStop Color="White" Offset="0.0"/>
+                    <GradientStop Color="White" Offset="1.0"/>
+                </GradientStopCollection>
+            </GradientBrush.GradientStops>
+        </LinearGradientBrush>
+
+        <LinearGradientBrush x:Key="NormalBorderBrush" StartPoint="0,0" EndPoint="0,1">
+            <GradientBrush.GradientStops>
+                <GradientStopCollection>
+                    <GradientStop Color="White" Offset="0.0"/>
+                    <GradientStop Color="White" Offset="1.0"/>
+                </GradientStopCollection>
+            </GradientBrush.GradientStops>
+        </LinearGradientBrush>
+
+        <SolidColorBrush x:Key="GlyphBrush" Color="#444" />
+
+        <LinearGradientBrush x:Key="DarkBrush" StartPoint="0,0" EndPoint="0,1">
+            <GradientBrush.GradientStops>
+                <GradientStopCollection>
+                    <GradientStop Color="White" Offset="0.0"/>
+                    <GradientStop Color="White" Offset="1.0"/>
+                </GradientStopCollection>
+            </GradientBrush.GradientStops>
+        </LinearGradientBrush>
+
+        <LinearGradientBrush x:Key="PressedBrush" StartPoint="0,0" EndPoint="0,1">
+            <GradientBrush.GradientStops>
+                <GradientStopCollection>
+                    <GradientStop Color="White" Offset="0.0"/>
+                    <GradientStop Color="White" Offset="0.1"/>
+                    <GradientStop Color="White" Offset="0.9"/>
+                    <GradientStop Color="White" Offset="1.0"/>
+                </GradientStopCollection>
+            </GradientBrush.GradientStops>
+        </LinearGradientBrush>
+
+        <SolidColorBrush x:Key="DisabledForegroundBrush" Color="White" />
+
+        <SolidColorBrush x:Key="DisabledBackgroundBrush" Color="White" />
+
+        <SolidColorBrush x:Key="WindowBackgroundBrush" Color="White" />
+
+        <SolidColorBrush x:Key="SelectedBackgroundBrush" Color="White" />
+
+        <SolidColorBrush x:Key="ComboBox.Static.Border" Color="White"/>
+
+        <SolidColorBrush x:Key="ComboBox.Static.Editable.Background" Color="White"/>
+
+        <SolidColorBrush x:Key="ComboBox.Static.Editable.Border" Color="White"/>
+
+        <SolidColorBrush x:Key="ComboBox.Static.Editable.Button.Background" Color="Transparent"/>
+
+        <SolidColorBrush x:Key="ComboBox.Static.Editable.Button.Border" Color="Transparent"/>
+
+        <SolidColorBrush x:Key="ComboBox.MouseOver.Glyph" Color="White"/>
+
+        <LinearGradientBrush x:Key="ComboBox.MouseOver.Background" EndPoint="0,1" StartPoint="0,0">
+            <GradientStop Color="White" Offset="0.0"/>
+            <GradientStop Color="White" Offset="1.0"/>
+        </LinearGradientBrush>
+
+        <SolidColorBrush x:Key="ComboBox.MouseOver.Border" Color="#FF7EB4EA"/>
+
+        <SolidColorBrush x:Key="ComboBox.MouseOver.Editable.Background" Color="White"/>
+
+        <SolidColorBrush x:Key="ComboBox.MouseOver.Editable.Border" Color="White"/>
+
+        <LinearGradientBrush x:Key="ComboBox.MouseOver.Editable.Button.Background" EndPoint="0,1" StartPoint="0,0">
+            <GradientStop Color="White" Offset="0.0"/>
+            <GradientStop Color="White" Offset="1.0"/>
+        </LinearGradientBrush>
+
+        <SolidColorBrush x:Key="ComboBox.MouseOver.Editable.Button.Border" Color="White"/>
+
+        <SolidColorBrush x:Key="ComboBox.Pressed.Glyph" Color="White"/>
+
+        <LinearGradientBrush x:Key="ComboBox.Pressed.Background" EndPoint="0,1" StartPoint="0,0">
+            <GradientStop Color="White" Offset="0.0"/>
+            <GradientStop Color="White" Offset="1.0"/>
+        </LinearGradientBrush>
+
+        <SolidColorBrush x:Key="ComboBox.Pressed.Border" Color="White"/>
+
+        <SolidColorBrush x:Key="ComboBox.Pressed.Editable.Background" Color="White"/>
+
+        <SolidColorBrush x:Key="ComboBox.Pressed.Editable.Border" Color="White"/>
+
+        <LinearGradientBrush x:Key="ComboBox.Pressed.Editable.Button.Background" EndPoint="0,1" StartPoint="0,0">
+            <GradientStop Color="White" Offset="0.0"/>
+            <GradientStop Color="White" Offset="1.0"/>
+        </LinearGradientBrush>
+
+        <SolidColorBrush x:Key="ComboBox.Pressed.Editable.Button.Border" Color="White"/>
+
+        <SolidColorBrush x:Key="ComboBox.Disabled.Glyph" Color="White"/>
+
+        <SolidColorBrush x:Key="ComboBox.Disabled.Background" Color="White"/>
+
+        <SolidColorBrush x:Key="ComboBox.Disabled.Border" Color="White"/>
+
+        <SolidColorBrush x:Key="ComboBox.Disabled.Editable.Background" Color="White"/>
+
+        <SolidColorBrush x:Key="ComboBox.Disabled.Editable.Border" Color="White"/>
+
+        <SolidColorBrush x:Key="ComboBox.Disabled.Editable.Button.Background" Color="Transparent"/>
+
+        <SolidColorBrush x:Key="ComboBox.Disabled.Editable.Button.Border" Color="Transparent"/>
+
+        <SolidColorBrush x:Key="ComboBox.Static.Glyph" Color="Black"/>
+
+        <ControlTemplate x:Key="ComboBoxTextBox" TargetType="TextBox">
+            <Border x:Name="PART_ContentHost" Focusable="False" Background="{TemplateBinding Background}" />
+        </ControlTemplate>
+        <Style x:Key="ComboBoxToggleButton" TargetType="ToggleButton">
+            <Setter Property="OverridesDefaultStyle" Value="true"/>
+            <Setter Property="IsTabStop" Value="false"/>
+            <Setter Property="Focusable" Value="false"/>
+            <Setter Property="ClickMode" Value="Press"/>
+            <Setter Property="Template">
+                <Setter.Value>
+                    <ControlTemplate TargetType="{x:Type ToggleButton}">
+                        <Border x:Name="templateRoot"  SnapsToDevicePixels="true"  Background="White">
+                            <Border x:Name="splitBorder"  HorizontalAlignment="Right" Margin="0,0,2,0" SnapsToDevicePixels="true" Width="25" BorderBrush="White" BorderThickness="1,0,0,0">
+                                <Path x:Name="arrow"  Data="F1 M 0,0 L 3.667,2.66665 L 7.3334,0 L 7.3334,-1.78168 L 3.6667,0.88501 L0,-1.78168 L0,0 Z" Fill="{StaticResource ComboBox.Static.Glyph}" HorizontalAlignment="Center"  VerticalAlignment="Center"/>
+                            </Border>
+                        </Border>
+                        <ControlTemplate.Triggers>
+                            <MultiDataTrigger>
+                                <MultiDataTrigger.Conditions>
+                                    <Condition Binding="{Binding IsEditable, RelativeSource={RelativeSource AncestorType={x:Type ComboBox}}}" Value="true"/>
+                                    <Condition Binding="{Binding IsMouseOver, RelativeSource={RelativeSource Self}}" Value="false"/>
+                                    <Condition Binding="{Binding IsPressed, RelativeSource={RelativeSource Self}}" Value="false"/>
+                                    <Condition Binding="{Binding IsEnabled, RelativeSource={RelativeSource Self}}" Value="true"/>
+                                </MultiDataTrigger.Conditions>
+                                <Setter Property="Background" TargetName="templateRoot" Value="{StaticResource ComboBox.Static.Editable.Background}"/>
+
+                                <Setter Property="Background" TargetName="splitBorder" Value="{StaticResource ComboBox.Static.Editable.Button.Background}"/>
+
+                            </MultiDataTrigger>
+                            <Trigger Property="IsMouseOver" Value="true">
+                                <Setter Property="Fill" TargetName="arrow" Value="{StaticResource ComboBox.MouseOver.Glyph}"/>
+                            </Trigger>
+                            <MultiDataTrigger>
+                                <MultiDataTrigger.Conditions>
+                                    <Condition Binding="{Binding IsMouseOver, RelativeSource={RelativeSource Self}}" Value="true"/>
+                                    <Condition Binding="{Binding IsEditable, RelativeSource={RelativeSource AncestorType={x:Type ComboBox}}}" Value="false"/>
+                                </MultiDataTrigger.Conditions>
+                                <Setter Property="Background" TargetName="templateRoot" Value="{StaticResource ComboBox.MouseOver.Background}"/>
+
+                            </MultiDataTrigger>
+                            <MultiDataTrigger>
+                                <MultiDataTrigger.Conditions>
+                                    <Condition Binding="{Binding IsMouseOver, RelativeSource={RelativeSource Self}}" Value="true"/>
+                                    <Condition Binding="{Binding IsEditable, RelativeSource={RelativeSource AncestorType={x:Type ComboBox}}}" Value="true"/>
+                                </MultiDataTrigger.Conditions>
+                                <Setter Property="Background" TargetName="templateRoot" Value="{StaticResource ComboBox.MouseOver.Editable.Background}"/>
+
+                                <Setter Property="Background" TargetName="splitBorder" Value="{StaticResource ComboBox.MouseOver.Editable.Button.Background}"/>
+
+                            </MultiDataTrigger>
+                            <Trigger Property="IsPressed" Value="true">
+                                <Setter Property="Fill" TargetName="arrow" Value="{StaticResource ComboBox.Pressed.Glyph}"/>
+                            </Trigger>
+                            <MultiDataTrigger>
+                                <MultiDataTrigger.Conditions>
+                                    <Condition Binding="{Binding IsPressed, RelativeSource={RelativeSource Self}}" Value="true"/>
+                                    <Condition Binding="{Binding IsEditable, RelativeSource={RelativeSource AncestorType={x:Type ComboBox}}}" Value="false"/>
+                                </MultiDataTrigger.Conditions>
+                                <Setter Property="Background" TargetName="templateRoot" Value="{StaticResource ComboBox.Pressed.Background}"/>
+
+                            </MultiDataTrigger>
+                            <MultiDataTrigger>
+                                <MultiDataTrigger.Conditions>
+                                    <Condition Binding="{Binding IsPressed, RelativeSource={RelativeSource Self}}" Value="true"/>
+                                    <Condition Binding="{Binding IsEditable, RelativeSource={RelativeSource AncestorType={x:Type ComboBox}}}" Value="true"/>
+                                </MultiDataTrigger.Conditions>
+                                <Setter Property="Background" TargetName="templateRoot" Value="{StaticResource ComboBox.Pressed.Editable.Background}"/>
+
+                                <Setter Property="Background" TargetName="splitBorder" Value="{StaticResource ComboBox.Pressed.Editable.Button.Background}"/>
+
+                            </MultiDataTrigger>
+                            <Trigger Property="IsEnabled" Value="false">
+                                <Setter Property="Fill" TargetName="arrow" Value="{StaticResource ComboBox.Disabled.Glyph}"/>
+                            </Trigger>
+                            <MultiDataTrigger>
+                                <MultiDataTrigger.Conditions>
+                                    <Condition Binding="{Binding IsEnabled, RelativeSource={RelativeSource Self}}" Value="false"/>
+                                    <Condition Binding="{Binding IsEditable, RelativeSource={RelativeSource AncestorType={x:Type ComboBox}}}" Value="false"/>
+                                </MultiDataTrigger.Conditions>
+                                <Setter Property="Background" TargetName="templateRoot" Value="{StaticResource ComboBox.Disabled.Background}"/>
+
+                            </MultiDataTrigger>
+                            <MultiDataTrigger>
+                                <MultiDataTrigger.Conditions>
+                                    <Condition Binding="{Binding IsEnabled, RelativeSource={RelativeSource Self}}" Value="false"/>
+                                    <Condition Binding="{Binding IsEditable, RelativeSource={RelativeSource AncestorType={x:Type ComboBox}}}" Value="true"/>
+                                </MultiDataTrigger.Conditions>
+                                <Setter Property="Background" TargetName="templateRoot" Value="{StaticResource ComboBox.Disabled.Editable.Background}"/>
+
+                                <Setter Property="Background" TargetName="splitBorder" Value="{StaticResource ComboBox.Disabled.Editable.Button.Background}"/>
+
+                            </MultiDataTrigger>
+                        </ControlTemplate.Triggers>
+                    </ControlTemplate>
+                </Setter.Value>
+            </Setter>
+        </Style>
+        <Style x:Key="{x:Type ComboBoxItem}" TargetType="ComboBoxItem">
+            <Setter Property="SnapsToDevicePixels" Value="true"/>
+            <Setter Property="OverridesDefaultStyle" Value="true"/>
+            <Setter Property="Template">
+                <Setter.Value>
+                    <ControlTemplate TargetType="ComboBoxItem">
+                        <Border 
+                      Name="Border"
+                      Padding="2"
+                      SnapsToDevicePixels="true">
+                            <ContentPresenter />
+                        </Border>
+                        <ControlTemplate.Triggers>
+                            <Trigger Property="IsHighlighted" Value="true">
+                                <Setter TargetName="Border" Property="Background" Value="{StaticResource SelectedBackgroundBrush}"/>
+                            </Trigger>
+                            <Trigger Property="IsEnabled" Value="false">
+                                <Setter Property="Foreground" Value="{StaticResource DisabledForegroundBrush}"/>
+                            </Trigger>
+
+                        </ControlTemplate.Triggers>
+                    </ControlTemplate>
+                </Setter.Value>
+            </Setter>
+        </Style>
+    </UserControl.Resources>
+    <Grid Background="#aaa">
+        <Border  Margin="1,1,1,1" BorderBrush="Black" CornerRadius="4,4,4,4">
+            <ComboBox x:Name="CheckableCombo">
+                <ComboBox.ItemTemplate>
+                    <HierarchicalDataTemplate>
+                        <CheckBox Content="{Binding Name}" Height="30"
+                          IsChecked="{Binding IsSelect, Mode=TwoWay}"
+                          Tag="{RelativeSource FindAncestor, AncestorType={x:Type ComboBox}}"
+                          Click="CheckBox_Click" VerticalContentAlignment="Center" HorizontalAlignment="Left"></CheckBox>
+                    </HierarchicalDataTemplate>
+                </ComboBox.ItemTemplate>
+                <ComboBox.Template>
+                    <ControlTemplate TargetType="ComboBox">
+                        <Grid>
+                            <ToggleButton Name="ToggleButton" 
+                                  Style="{StaticResource ComboBoxToggleButton}"
+                                  Focusable="False" Click="ToggleButton_Click"
+                                  IsChecked="{Binding Path=IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}">
+                            </ToggleButton>
+                            <ContentPresenter x:Name="Presenter"
+                                      IsHitTestVisible="False"
+                                      Margin="3, 3, 23, 3"
+                                      VerticalAlignment="Center"
+                                      HorizontalAlignment="Left">
+                                <ContentPresenter.Content>
+                                    <TextBlock TextTrimming="CharacterEllipsis" 
+                                       Text="{Binding Path=Text, Mode=TwoWay, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl}}">
+                                    </TextBlock>
+                                </ContentPresenter.Content>
+                            </ContentPresenter>
+                            <TextBox x:Name="EditableTextBox"
+                    Style="{x:Null}" 
+                    Template="{StaticResource ComboBoxTextBox}" 
+                    HorizontalAlignment="Left" 
+                    VerticalAlignment="Center" 
+                    Margin="3,3,23,3"
+                    Focusable="True" 
+                    Background="Transparent"
+                    Visibility="Hidden"
+                    IsReadOnly="{TemplateBinding IsReadOnly}"/>
+                            <Popup 
+                    Name="Popup"
+                    Placement="Bottom"
+                    IsOpen="{TemplateBinding IsDropDownOpen}"
+                    AllowsTransparency="True" 
+                    Focusable="False"
+                    PopupAnimation="Slide">
+                                <Grid 
+                              Name="DropDown"
+                              SnapsToDevicePixels="True"    
+                              MinWidth="{TemplateBinding ActualWidth}"
+                              MaxHeight="{TemplateBinding MaxDropDownHeight}">
+                                    <Border 
+                                x:Name="DropDownBorder"
+                                Background="{StaticResource WindowBackgroundBrush}" BorderThickness="1,1,1,1" BorderBrush="White"/>
+                                    <ScrollViewer Margin="4,6,4,6" SnapsToDevicePixels="True" DataContext="{Binding}">
+                                        <StackPanel IsItemsHost="True" KeyboardNavigation.DirectionalNavigation="Contained" />
+                                    </ScrollViewer>
+                                </Grid>
+                            </Popup>
+                        </Grid>
+                        <ControlTemplate.Triggers>
+                            <Trigger Property="HasItems" Value="false">
+                                <Setter TargetName="DropDownBorder" Property="MinHeight" Value="95"/>
+                            </Trigger>
+                            <Trigger Property="IsEnabled" Value="false">
+                                <Setter Property="Foreground" Value="{StaticResource DisabledForegroundBrush}"/>
+                            </Trigger>
+                            <Trigger Property="IsGrouping" Value="true">
+                                <Setter Property="ScrollViewer.CanContentScroll" Value="false"/>
+                            </Trigger>
+                            <Trigger SourceName="Popup" Property="Popup.AllowsTransparency" Value="true">
+                                <Setter TargetName="DropDownBorder" Property="CornerRadius" Value="4"/>
+                                <Setter TargetName="DropDownBorder" Property="Margin" Value="0,2,0,0"/>
+                            </Trigger>
+                            <Trigger Property="IsEditable" Value="true">
+                                <Setter Property="IsTabStop" Value="false"/>
+                                <Setter TargetName="EditableTextBox" Property="Visibility"    Value="Visible"/>
+                                <Setter TargetName="Presenter" Property="Visibility" Value="Hidden"/>
+                            </Trigger>
+                        </ControlTemplate.Triggers>
+                    </ControlTemplate>
+                </ComboBox.Template>
+            </ComboBox>
+        </Border>
+    </Grid>
+</UserControl>

+ 270 - 0
CollaborativePlatformMain/Form/UserControlForm/NativeCombox.xaml.cs

@@ -0,0 +1,270 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Shapes;
+
+namespace CollaborativePlatformMain.Form.UserControlForm
+{
+    /// <summary>
+    /// NativeCombox.xaml 的交互逻辑
+    /// </summary>
+    public partial class NativeCombox : UserControl
+    {
+        /// <summary>
+        /// 初始化渲染
+        /// </summary>
+        public NativeCombox()
+        {
+            InitializeComponent();
+        }
+
+        /// <summary>
+        /// 事件
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        public delegate void comboxHeand(object sender, EventArgs e);
+
+        /// <summary>
+        /// checkboc按钮点击命令
+        /// </summary>
+        public event comboxHeand UserControlComBoxClick;
+
+        /// <summary>
+        /// 下拉按钮点击命令
+        /// </summary>
+        public event comboxHeand UserControlToggleClick;
+
+        /// <summary>
+        /// 当前 NativeCombox 选中的值
+        /// </summary>
+        public List<string> listKey;
+
+        /// <summary>
+        /// ItemsSource属性
+        /// </summary>
+        public List<NativeDataInfo> ItemsSource
+        {
+            get { return (List<NativeDataInfo>)GetValue(ItemsSourceProperty); }
+            set
+            {
+                SetValue(ItemsSourceProperty, value);
+                SetText();
+            }
+        }
+
+        /// <summary>
+        /// ItemsSource实体属性
+        /// </summary>
+        public static readonly DependencyProperty ItemsSourceProperty =
+            DependencyProperty.Register("ItemsSource", typeof(object), typeof(NativeCombox), new FrameworkPropertyMetadata(null, ItemsSourcePropertyChangedCallback));
+
+        /// <summary>
+        /// ItemsSource实体属性改变事件
+        /// </summary>
+        /// <param name="dependencyObject"></param>
+        /// <param name="e"></param>
+        private static void ItemsSourcePropertyChangedCallback(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs e)
+        {
+            var multioleCheckbox = dependencyObject as NativeCombox;
+            if (multioleCheckbox == null) return;
+            multioleCheckbox.CheckableCombo.ItemsSource = multioleCheckbox.ItemsSource;
+        }
+
+        /// <summary>
+        /// Text属性
+        /// </summary>
+        public string Text
+        {
+            get { return (string)GetValue(TextProperty); }
+            set { SetValue(TextProperty, value); }
+        }
+
+        /// <summary>
+        /// text标题实体
+        /// </summary>
+        public static readonly DependencyProperty TextProperty =
+            DependencyProperty.Register("Text", typeof(string), typeof(NativeCombox), new FrameworkPropertyMetadata("", TextPropertyChangedCallback));
+
+        private static void TextPropertyChangedCallback(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs dependencyPropertyChangedEventArgs)
+        {
+            var multioleCheckbox = dependencyObject as NativeCombox;
+            if (multioleCheckbox == null) return;
+        }
+
+        /// <summary>
+        /// 默认标题
+        /// </summary>
+        public string DefaultText
+        {
+            get { return (string)GetValue(DefaultTextProperty); }
+            set { SetValue(DefaultTextProperty, value); }
+        }
+
+        /// <summary>
+        /// 默认标题实体
+        /// </summary>
+        public static readonly DependencyProperty DefaultTextProperty =
+            DependencyProperty.RegisterAttached("DefaultText", typeof(string), typeof(NativeCombox), new UIPropertyMetadata(string.Empty));
+
+        /// <summary>
+        /// checkBox 选中事件
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void CheckBox_Click(object sender, RoutedEventArgs e)
+        {
+            var checkbox = sender as CheckBox;
+            if (checkbox == null) return;
+            SetText();
+            if (UserControlComBoxClick != null)
+                UserControlComBoxClick(sender, new EventArgs());
+        }
+
+        /// <summary>
+        /// 设置text值
+        /// </summary>
+        public void SetText()
+        {
+            Text = "";
+            listKey = new List<string>();
+            foreach (var item in ItemsSource)
+            {
+                if (item.IsSelect)
+                {
+                    Text += item.Name + ",";
+                    listKey.Add(item.Key);
+                }
+            }
+            Text = string.IsNullOrEmpty(Text) ? DefaultText : Text.TrimEnd(new[] { ',' });
+        }
+
+        /// <summary>
+        /// 下拉按钮点击
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void ToggleButton_Click(object sender, RoutedEventArgs e)
+        {
+            if (UserControlToggleClick != null)
+                UserControlToggleClick(sender, new EventArgs());
+        }
+    }
+
+    /// <summary>
+    ///
+    /// <para>文件名(File Name):     NativeDataInfo.cs</para>
+    ///
+    /// <para>描述(Description):     combox控件实体数据源</para>
+    ///
+    /// <para>数据表(Tables):        nothing</para>
+    ///
+    /// <para>作者(Author):          Li Wen Jin</para>
+    ///
+    /// <para>日期(Create Date):     2023年3月4日09:37:20</para>
+    ///
+    /// 修改记录(Revision History):
+    ///     R1:
+    ///         修改作者:
+    ///         修改日期:
+    ///         修改理由:
+    ///
+    /// </summary>
+    public class NativeDataInfo : INotifyPropertyChanged
+    {
+        /// <summary>
+        /// 唯一标识
+        /// </summary>
+        private string key;
+
+        /// <summary>
+        /// 唯一标识
+        /// </summary>
+        public string Key
+        {
+            get { return key; }
+            set { key = value; }
+        }
+
+        /// <summary>
+        /// 展示名称
+        /// </summary>
+        private string name;
+
+        /// <summary>
+        /// 展示名称
+        /// </summary>
+        public string Name
+        {
+            get { return name; }
+            set { name = value; }
+        }
+
+        /// <summary>
+        /// 是否选中
+        /// </summary>
+        private bool isSelect;
+
+
+
+        /// <summary>
+        /// 是否选中
+        /// </summary>
+        public bool IsSelect
+        {
+            get { return isSelect; }
+            set
+            {
+                if (value != isSelect)
+                {
+                    isSelect = value;
+                    NotifyPropertyChanged("IsSelect");
+                }
+            }
+        }
+
+        /// <summary>
+        /// 数据绑定
+        /// </summary>
+        /// <param name="key">唯一标识</param>
+        /// <param name="name">界面展示内容</param>
+        public NativeDataInfo(string key, string name)
+        {
+            this.key = key;
+            this.name = name;
+        }
+
+        public NativeDataInfo()
+        {
+        }
+
+        /// <summary>
+        /// 数据绑定
+        /// </summary>
+        /// <param name="isSelect"></param>
+        /// <param name="name"></param>
+        public NativeDataInfo(bool isSelect, string name)
+        {
+            this.name = name;
+            this.isSelect = isSelect;
+        }
+
+
+        public event PropertyChangedEventHandler PropertyChanged;
+        private void NotifyPropertyChanged(string propertyName = "")
+        {
+            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
+        }
+
+    }
+}