瀏覽代碼

完善数据检查

mengxiangge 6 年之前
父節點
當前提交
4f2edd51ef

+ 3 - 0
.gitignore

@@ -35,3 +35,6 @@
 /MBI/SAGA.RevitFirmLib/obj/Debug
 /MBI/.vs/SAGA.Revit/v15
 /MBI/SAGA.RevitFirmLib/obj/Debug
+/MBI/Menu/MBITool.xml
+/MBI/SAGA.GplotRelationComputerManage/obj/Debug
+/MBI/SAGA.RevitMenu/obj

+ 15 - 11
MBI/Menu/SAGABIM.xml

@@ -12,10 +12,14 @@
     <MenuTab>Space_W</MenuTab>
     <Modules>Space</Modules>
   </Tab>
-  <Tab TabName="资产管理">
+  <Tab TabName="资产及扫楼数据管理">
     <MenuTab>ZCGL_W</MenuTab>
     <Modules>ZCGL</Modules>
   </Tab>
+  <Tab TabName="厂商资料库">
+    <MenuTab>CSZLK_M</MenuTab>
+    <Modules>CSZLK</Modules>
+  </Tab>
   <Tab TabName="数据检查">
     <MenuTab>SJJC_W</MenuTab>
     <Modules>SJJC</Modules>
@@ -83,7 +87,7 @@
     </Button>
   </Panel>
 
-  <Panel PanelName="检查设备设施模型" GroupFlag="True" GroupImage="" RevitVer="R16,R17" ButtonStyles="Large">
+  <Panel PanelName="完善设备设施模型" GroupFlag="True" GroupImage="" RevitVer="R16,R17" ButtonStyles="Large">
 
     <Button ButtonStyles="Pushdown">
       <ButtonName>SAGA.MBI.ShowMissFMListCommand</ButtonName>
@@ -195,8 +199,8 @@
       <ToolTip>生产商</ToolTip>
       <LongDescription>生产商</LongDescription>
       <ToolTipImage></ToolTipImage>
-      <MenuTab>ZCGL_W</MenuTab>
-      <Modules>ZCGL</Modules>
+      <MenuTab>CSZLK_M</MenuTab>
+      <Modules>CSZLK</Modules>
     </Button>
     <Button ButtonStyles="Large">
       <ButtonName>SAGA.RevitFirmLib.SellerCommand</ButtonName>
@@ -207,8 +211,8 @@
       <ToolTip>供应商</ToolTip>
       <LongDescription>供应商</LongDescription>
       <ToolTipImage></ToolTipImage>
-      <MenuTab>ZCGL_W</MenuTab>
-      <Modules>ZCGL</Modules>
+      <MenuTab>CSZLK_M</MenuTab>
+      <Modules>CSZLK</Modules>
     </Button>
 
     <Button ButtonStyles="Large">
@@ -220,8 +224,8 @@
       <ToolTip>维修商</ToolTip>
       <LongDescription>维修商</LongDescription>
       <ToolTipImage></ToolTipImage>
-      <MenuTab>ZCGL_W</MenuTab>
-      <Modules>ZCGL</Modules>
+      <MenuTab>CSZLK_M</MenuTab>
+      <Modules>CSZLK</Modules>
     </Button>
 
     <Button ButtonStyles="Large">
@@ -233,8 +237,8 @@
       <ToolTip>保险商</ToolTip>
       <LongDescription>保险商</LongDescription>
       <ToolTipImage></ToolTipImage>
-      <MenuTab>ZCGL_W</MenuTab>
-      <Modules>ZCGL</Modules>
+      <MenuTab>CSZLK_M</MenuTab>
+      <Modules>CSZLK</Modules>
     </Button>
   </Panel>
   <Panel PanelName="扫楼业务" GroupFlag="True" GroupImage="" RevitVer="R14,R15,R16,R17" ButtonStyles="Large">
@@ -320,7 +324,7 @@
       <Modules>ZCGL</Modules>
     </Button>
   </Panel>
-  <Panel PanelName="数据检查" GroupFlag="True" GroupImage="" RevitVer="R14,R15,R16,R17" ButtonStyles="Large">
+  <Panel PanelName="模型及数据检查" GroupFlag="True" GroupImage="" RevitVer="R14,R15,R16,R17" ButtonStyles="Large">
     <Button ButtonStyles="Large">
       <ButtonName>SAGA.MBI.ModeSpecificationCheckCommand</ButtonName>
       <ButtonText>模型规范检查</ButtonText>

+ 3 - 10
MBI/SAGA.MBI/DataArrange/DalProjectTree.cs

@@ -140,7 +140,7 @@ namespace SAGA.MBI.DataArrange
         /// </summary>
         /// <param name="isOnlyPermission">仅获取有权限的楼层</param>
         /// <returns></returns>
-        public static List<MFloor> GetSelectedProjectFloors(bool isOnlyPermission)
+        public static List<MFloor> GetSelectedFloors()
         {
             List<MFloor> floors = new List<MFloor>();
             foreach (TreeNodeItem buildingTree in MBIControl.ProjectTree.Children)
@@ -150,17 +150,10 @@ namespace SAGA.MBI.DataArrange
                 {
                     foreach (TreeNodeItem floorTree in buildingTree.Children)
                     {
+                        if (!floorTree.IsSelected) continue;
                         if (floorTree.Item is MFloor floor)
                         {
-                            if (isOnlyPermission)
-                            {
-                                if (floor.FloorLock.LockState == MFloorLockState.LockBySelf)
-                                    floors.Add(floor);
-                            }
-                            else
-                            {
-                                floors.Add(floor);
-                            }
+                            floors.Add(floor);
                         }
                     }
                 }

+ 11 - 2
MBI/SAGA.MBI/SAGA.MBI.csproj

@@ -280,10 +280,15 @@
     <Compile Include="ToolsData\DataCheck\DataCheckBase.cs" />
     <Compile Include="ToolsData\CheckBase\CheckContext.cs" />
     <Compile Include="ToolsData\DataCheck\DataCheckResultBase.cs" />
+    <Compile Include="ToolsData\DataCheck\MissDutyOrModeCheck.cs" />
+    <Compile Include="ToolsData\DataCheck\MissDutyOrModeCheckResult.cs" />
     <Compile Include="ToolsData\DataCheck\QRCodeContextCheck.cs" />
     <Compile Include="ToolsData\DataCheck\DutyFMInfoCheck.cs" />
     <Compile Include="ToolsData\DataCheck\QRCodeContextCheckResult.cs" />
     <Compile Include="ToolsData\DataCheck\DutyFMInfoCheckResult.cs" />
+    <Compile Include="ToolsData\DataCheck\WinDataCheckSetting.xaml.cs">
+      <DependentUpon>WinDataCheckSetting.xaml</DependentUpon>
+    </Compile>
     <Compile Include="ToolsData\ModeCheck\ModeCheckBase.cs" />
     <Compile Include="ToolsData\ModeCheck\DataCheckRule.cs" />
     <Compile Include="ToolsData\CheckBase\DCElementType.cs" />
@@ -322,7 +327,7 @@
     <Compile Include="ToolsData\CheckBase\WinDataCheckProgressBar.xaml.cs">
       <DependentUpon>WinDataCheckProgressBar.xaml</DependentUpon>
     </Compile>
-    <Compile Include="ToolsData\CheckBase\WinModeCheckSetting.xaml.cs">
+    <Compile Include="ToolsData\ModeCheck\WinModeCheckSetting.xaml.cs">
       <DependentUpon>WinModeCheckSetting.xaml</DependentUpon>
     </Compile>
     <Compile Include="ToolsData\CorrectLossDuty.cs" />
@@ -671,10 +676,14 @@
       <Generator>MSBuild:Compile</Generator>
       <SubType>Designer</SubType>
     </Page>
-    <Page Include="ToolsData\CheckBase\WinModeCheckSetting.xaml">
+    <Page Include="ToolsData\ModeCheck\WinModeCheckSetting.xaml">
       <SubType>Designer</SubType>
       <Generator>MSBuild:Compile</Generator>
     </Page>
+    <Page Include="ToolsData\DataCheck\WinDataCheckSetting.xaml">
+      <Generator>MSBuild:Compile</Generator>
+      <SubType>Designer</SubType>
+    </Page>
     <Page Include="WinView\BeModingDutyList\WinBeModeDutyList.xaml">
       <SubType>Designer</SubType>
       <Generator>MSBuild:Compile</Generator>

+ 3 - 2
MBI/SAGA.MBI/ToolCommand.cs

@@ -19,11 +19,12 @@ using SAGA.DotNetUtils.Logger;
 using SAGA.MBI.Common;
 using SAGA.MBI.ToolsData;
 using SAGA.MBI.ToolsData.CheckBase;
+using SAGA.MBI.ToolsData.DataCheck;
 using SAGA.MBI.ToolsData.ModeCheck;
 using SAGA.MBI.WinView.Login;
 using SAGA.RevitUtils;
 using SAGA.RevitUtils.Extends;
-using WinModeCheckSetting = SAGA.MBI.ToolsData.CheckBase.WinModeCheckSetting;
+using WinModeCheckSetting = SAGA.MBI.ToolsData.ModeCheck.WinModeCheckSetting;
 
 namespace SAGA.MBI
 {
@@ -258,7 +259,7 @@ namespace SAGA.MBI
                 var checkType = CheckType.DataCheck;
                 var checkItems = CheckOperation.GetCheckItems(checkType);
 
-                WinModeCheckSetting win = new WinModeCheckSetting(checkItems,CheckType.DataCheck);
+                WinDataCheckSetting win = new WinDataCheckSetting(checkItems,CheckType.DataCheck);
                 if (win.ShowDialog() != true) return Result.Cancelled;
                 CheckOperation.Execute(checkItems, win.GetCheckContext());
             }

+ 1 - 5
MBI/SAGA.MBI/ToolsData/CheckBase/CheckContext.cs

@@ -24,11 +24,7 @@ namespace SAGA.MBI.ToolsData.CheckBase
         /// 建筑Id
         /// </summary>
         public string BuildingId { get; set; }
-
-        /// <summary>
-        /// 仅检查有权限的
-        /// </summary>
-        public bool IsOnlyCheckHasPermission { get; set; }
+        
 
         /// <summary>
         /// 保存路径

+ 0 - 168
MBI/SAGA.MBI/ToolsData/CheckBase/WinModeCheckSetting.xaml.cs

@@ -1,168 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-using System.ComponentModel;
-using System.Globalization;
-using System.Linq;
-using System.Windows;
-using System.Windows.Data;
-using SAGA.DotNetUtils.Extend;
-using SAGA.MBI.Common;
-using SAGA.MBI.DataArrange;
-using SAGA.MBI.Model;
-using SAGA.MBI.ToolsData.ModeCheck;
-
-namespace SAGA.MBI.ToolsData.CheckBase
-{
-    /// <summary>
-    /// WinModeCheckSetting.xaml 的交互逻辑
-    /// </summary>
-    public partial class WinModeCheckSetting : INotifyPropertyChanged
-    {
-        private CheckType m_CheckType;
-        public WinModeCheckSetting(List<ICheckBase> checkItems, CheckType checkType)
-        {
-            InitializeComponent();
-            m_CheckType = checkType;
-            myListbox.ItemsSource = checkItems;
-            Init();
-            this.DataContext = this;
-        }
-
-        private void Init()
-        {
-            IsOnlyCheckHasPermission = false;
-
-            ProjectList = MBIControl.ProjectTree.Children;
-            if (ProjectList.FirstOrDefault() != null)
-                ProjectList.FirstOrDefault().IsSelected = true;
-            SavePath = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory),
-                $"{MBIControl.ProjectCur}{m_CheckType.GetDescription()}检查结果.xlsx");
-            OFImage = CommonTool.GetBtnImagePath(SavePath);
-        }
-
-
-        #region BindingProperty
-
-        private bool m_IsOnlyCheckHasPermission;
-
-        /// <summary>
-        /// 仅检查有权限的
-        /// </summary>
-        public bool IsOnlyCheckHasPermission
-        {
-            get { return m_IsOnlyCheckHasPermission; }
-            set
-            {
-                m_IsOnlyCheckHasPermission = value;
-            }
-        }
-
-        private ObservableCollection<TreeNodeItem> m_ProjectList;
-
-        public ObservableCollection<TreeNodeItem> ProjectList
-        {
-            get { return m_ProjectList; }
-            set { m_ProjectList = value; }
-        }
-
-        private string m_SavePath;
-
-        /// <summary>
-        /// 保存路径
-        /// </summary>
-        public string SavePath
-        {
-            get { return m_SavePath; }
-            set
-            {
-                m_SavePath = value;
-                PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(SavePath)));
-            }
-        }
-
-        private string m_OFImage;
-
-
-        /// <summary>
-        /// 打开关闭按钮图片
-        /// </summary>
-        public string OFImage
-        {
-            get { return m_OFImage; }
-            set { m_OFImage = value; }
-        }
-
-        public event PropertyChangedEventHandler PropertyChanged;
-        #endregion
-
-
-        #region Action
-
-        private void SelectFile_Click(object sender, RoutedEventArgs e)
-        {
-            SavePath = DCRExport.GetExportPath(SavePath);
-        }
-
-        private void ButtonNext_OnClick(object sender, RoutedEventArgs e)
-        {
-            if (CanExecute())
-            {
-                this.DialogResult = true;
-            }
-        }
-
-        private bool CanExecute()
-        {
-            bool result = DalProjectTree.GetSelectedBuilding()?.Id != null; ;
-            if (!result)
-            {
-                MessageBox.Show("请选择需要检查的建筑");
-                if (ProjectList.FirstOrDefault() != null)
-                    ProjectList.FirstOrDefault().IsSelected = true;
-            }
-            else
-            {
-                var list = myListbox.ItemsSource as List<ICheckBase>;
-                result = list.Any(t => t.RIsChecked);
-                if (!result)
-                {
-                    MessageBox.Show("请至少选择一个检查项");
-                }
-            }
-
-
-            return result;
-        }
-        #endregion
-        /// <summary>
-        /// 获取数据检查上下文
-        /// </summary>
-        /// <param name="savepath"></param>
-        /// <returns></returns>
-        public CheckContext GetCheckContext()
-        {
-            CheckContext context = new CheckContext();
-            context.BuildingId = DalProjectTree.GetSelectedBuilding()?.Id;
-            context.IsOnlyCheckHasPermission = IsOnlyCheckHasPermission;
-            context.SavePath = SavePath;
-            context.TemplatePath = CheckOperation.GetSaveTemplatePath(m_CheckType);
-            return context;
-        }
-
-    }
-    public class FloorRadioButtonVisibleConverter : IMultiValueConverter
-    {
-        public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
-        {
-            bool isproject = values[0] is MFloor;
-            return isproject ? Visibility.Collapsed : Visibility.Visible;
-        }
-
-        public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
-        {
-            throw new NotImplementedException();
-        }
-    }
-}
-

+ 12 - 17
MBI/SAGA.MBI/ToolsData/CheckBase/WinModeCheckSetting.xaml

@@ -1,4 +1,4 @@
-<Window x:Class="SAGA.MBI.ToolsData.CheckBase.WinModeCheckSetting"
+<Window x:Class="SAGA.MBI.ToolsData.DataCheck.WinDataCheckSetting"
              xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
              xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
@@ -8,7 +8,8 @@
              xmlns:converter="clr-namespace:SAGA.DotNetUtils.WPF.Converter;assembly=SAGA.DotNetUtils"
              xmlns:userControl="clr-namespace:SAGA.DotNetUtils.WPF.UserControl;assembly=SAGA.DotNetUtils"
              xmlns:checkBase="clr-namespace:SAGA.MBI.ToolsData.CheckBase"
-             mc:Ignorable="d"  Title="数据检查" WindowStartupLocation="CenterScreen"
+             xmlns:dataCheck="clr-namespace:SAGA.MBI.ToolsData.DataCheck"
+             mc:Ignorable="d"  Title="垃圾数据检查" WindowStartupLocation="CenterScreen"
              Height="587" Width="600">
     <Window.Resources>
         <converter:BoolToInverserConverter x:Key="BoolInverseConverter"></converter:BoolToInverserConverter>
@@ -34,12 +35,11 @@
             <Grid Grid.Column="0">
                 <Grid.RowDefinitions>
                     <RowDefinition Height="*"></RowDefinition>
-                    <RowDefinition Height="60"></RowDefinition>
                 </Grid.RowDefinitions>
                 <GroupBox Grid.Row="0" Header="请选择需要检查的建筑">
                     <TreeView ItemsSource="{Binding Path=ProjectList}">
                         <TreeView.Resources>
-                            <checkBase:FloorRadioButtonVisibleConverter x:Key="FloorRadioButtonVisibleConverter"></checkBase:FloorRadioButtonVisibleConverter>
+                            <dataCheck:FloorRadioButtonVisibleConverter x:Key="FloorRadioButtonVisibleConverter"></dataCheck:FloorRadioButtonVisibleConverter>
                         </TreeView.Resources>
                         <TreeView.ItemTemplate>
                             <HierarchicalDataTemplate ItemsSource="{Binding Path=Children}">
@@ -64,19 +64,6 @@
                         </TreeView.ItemContainerStyle>
                     </TreeView>
                 </GroupBox>
-                <GroupBox Grid.Row="1" Header="请选择楼层范围">
-                    <Grid HorizontalAlignment="Center">
-                        <Grid.ColumnDefinitions>
-                            <ColumnDefinition Width="Auto"></ColumnDefinition>
-                        </Grid.ColumnDefinitions>
-                        <WrapPanel  VerticalAlignment="Center" HorizontalAlignment="Center">
-                            <Label  Content="全部楼层"></Label>
-                            <userControl:SliderCheckBox   IsChecked="{Binding Path=CheckBase.IsOnlyCheckHasPermission,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"></userControl:SliderCheckBox>
-                            <Label  Content="有权限楼层"></Label>
-                        </WrapPanel>
-
-                    </Grid>
-                </GroupBox>
             </Grid>
             <Grid Grid.Column="1">
                 <GroupBox Header="请选择检查项">
@@ -130,3 +117,11 @@
 
 
 
+
+
+
+
+
+
+
+

+ 10 - 4
MBI/SAGA.MBI/ToolsData/ModeCheck/DCRExport.cs

@@ -15,6 +15,7 @@ using NPOI.HSSF.Util;
 using NPOI.SS.UserModel;
 using NPOI.SS.Util;
 using NPOI.XSSF.UserModel;
+using SAGA.DotNetUtils;
 using SAGA.DotNetUtils.Logger;
 using SAGA.DotNetUtils.Others;
 using SAGA.MBI.Common;
@@ -32,13 +33,18 @@ namespace SAGA.MBI.ToolsData.ModeCheck
         /// 获取导出Excel
         /// </summary>
         /// <returns></returns>
-        public static string GetExportPath(string defaultPath=null)
+        public static string GetExportPath(string defaultPath = null)
         {
             SaveFileDialog sflg = new SaveFileDialog();
-            sflg.InitialDirectory = defaultPath;
+            if (File.Exists(defaultPath))
+                sflg.InitialDirectory = defaultPath;
             sflg.Filter = "Excel(*.xlsx)|*.xlsx";
-            if (sflg.ShowDialog() != true) return "";
+            if (sflg.ShowDialog() != true) return defaultPath;
             string fileName = sflg.FileName;
+            if (fileName.IsNullOrEmpty())
+            {
+                fileName = defaultPath;
+            }
             return fileName;
         }
 
@@ -71,7 +77,7 @@ namespace SAGA.MBI.ToolsData.ModeCheck
                 {
                     m_ExportWorkBook = null;
                 }
-               
+
             }
 
             return m_ExportWorkBook;

+ 1 - 1
MBI/SAGA.MBI/ToolsData/ModeCheck/SagaSignCheck.cs

@@ -60,7 +60,7 @@ namespace SAGA.MBI.ToolsData.ModeCheck
         {
             bool allRight = true;
             //获取建筑下的楼层
-            var floors = DalProjectTree.GetSelectedProjectFloors(Context.IsOnlyCheckHasPermission);
+            var floors = DalProjectTree.GetSelectedFloors();
             int i = 0;
             foreach (MFloor mFloor in floors)
             {

+ 120 - 0
MBI/SAGA.MBI/ToolsData/ModeCheck/WinModeCheckSetting.xaml

@@ -0,0 +1,120 @@
+<Window x:Class="SAGA.MBI.ToolsData.ModeCheck.WinModeCheckSetting"
+             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
+             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
+             xmlns:local="clr-namespace:SAGA.MBI.ToolsData.ModeCheck"
+             xmlns:common="clr-namespace:SAGA.MBI.Common"
+             xmlns:converter="clr-namespace:SAGA.DotNetUtils.WPF.Converter;assembly=SAGA.DotNetUtils"
+             xmlns:userControl="clr-namespace:SAGA.DotNetUtils.WPF.UserControl;assembly=SAGA.DotNetUtils"
+             xmlns:checkBase="clr-namespace:SAGA.MBI.ToolsData.CheckBase"
+             xmlns:dataCheck="clr-namespace:SAGA.MBI.ToolsData.DataCheck"
+             mc:Ignorable="d"  Title="模型检查" WindowStartupLocation="CenterScreen"
+             Height="587" Width="600">
+    <Window.Resources>
+        <converter:BoolToInverserConverter x:Key="BoolInverseConverter"></converter:BoolToInverserConverter>
+        <converter:StringToImageConverter x:Key="StringToImageConverter"></converter:StringToImageConverter>
+    </Window.Resources>
+    <Grid>
+        <Grid.RowDefinitions>
+            <RowDefinition Height="40"></RowDefinition>
+            <RowDefinition Height="*"></RowDefinition>
+            <RowDefinition Height="80"></RowDefinition>
+        </Grid.RowDefinitions>
+        <Grid Grid.Row="0">
+            <WrapPanel VerticalAlignment="Center">
+                <Label Margin="5,0,0,0" Content="当前项目:" FontSize="15"></Label>
+                <Label Content="{x:Static common:MBIControl.ProjectCur}" FontSize="15"></Label>
+            </WrapPanel>
+        </Grid>
+        <Grid Grid.Row="1">
+            <Grid.ColumnDefinitions>
+                <ColumnDefinition Width="*"></ColumnDefinition>
+                <ColumnDefinition Width="*"></ColumnDefinition>
+            </Grid.ColumnDefinitions>
+            <Grid Grid.Column="0">
+                <Grid.RowDefinitions>
+                    <RowDefinition Height="*"></RowDefinition>
+                </Grid.RowDefinitions>
+                <GroupBox Grid.Row="0" Header="请选择需要检查的建筑">
+                    <TreeView ItemsSource="{Binding Path=ProjectList}">
+                        <TreeView.ItemTemplate>
+                            <HierarchicalDataTemplate ItemsSource="{Binding Path=Children}">
+                                <WrapPanel>
+                                    <CheckBox IsChecked="{Binding Path=IsSelected,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}"
+                                              Width="Auto" VerticalContentAlignment="Center" 
+                                              Checked="TreeItemChecked_OnChecked"
+                                              Unchecked="TreeItemChecked_OnChecked">
+                                    </CheckBox>
+                                    <Label Content="{Binding Path=Item.TvItemName}"></Label>
+                                </WrapPanel>
+                            </HierarchicalDataTemplate>
+                        </TreeView.ItemTemplate>
+                        <TreeView.ItemContainerStyle>
+                            <Style TargetType="{x:Type TreeViewItem}">
+                                <Setter Property="IsExpanded" Value="True" />
+                            </Style>
+                        </TreeView.ItemContainerStyle>
+                    </TreeView>
+                </GroupBox>
+            </Grid>
+            <Grid Grid.Column="1">
+                <GroupBox Header="请选择检查项">
+                    <ListBox  x:Name="myListbox" >
+                        <!--ItemsSource="{Binding Path=CheckList}"-->
+                        <ListBox.ItemTemplate>
+                            <DataTemplate>
+                                <WrapPanel  >
+                                    <CheckBox IsChecked="{Binding Path=RIsChecked,UpdateSourceTrigger=PropertyChanged}" 
+                                      IsEnabled="{Binding Path=RIsReadOnly,Converter={StaticResource BoolInverseConverter}}"
+                                      VerticalContentAlignment="Center"></CheckBox>
+                                    <Label Content="{Binding Path=Name}"></Label>
+                                </WrapPanel>
+                            </DataTemplate>
+                        </ListBox.ItemTemplate>
+                    </ListBox>
+                </GroupBox>
+            </Grid>
+        </Grid>
+        <Grid Grid.Row="2">
+            <Grid.RowDefinitions>
+                <RowDefinition></RowDefinition>
+                <RowDefinition></RowDefinition>
+            </Grid.RowDefinitions>
+            <Grid Grid.Row="0">
+                <Grid.ColumnDefinitions>
+                    <ColumnDefinition Width="*"></ColumnDefinition>
+                </Grid.ColumnDefinitions>
+                <userControl:SelectFile_Hyperlink Margin="5,0"  x:Name="btnSelectPath" VerticalContentAlignment="Center"
+                                                  Text="{Binding Path=SavePath,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
+                                                  BtnImage="{Binding Path=OFImage,Converter={StaticResource StringToImageConverter}}"
+                                                  OverrideClickAction="SelectFile_Click"></userControl:SelectFile_Hyperlink>
+            </Grid>
+            <Grid Grid.Row="1">
+                <Grid.ColumnDefinitions>
+                    <ColumnDefinition></ColumnDefinition>
+                    <ColumnDefinition></ColumnDefinition>
+                </Grid.ColumnDefinitions>
+                <Button Grid.Column="0" Width="100" Height="25" Content="确定" HorizontalAlignment="Right" Margin="0,0,20,0" VerticalAlignment="Center" Click="ButtonNext_OnClick" IsDefault="True"></Button>
+                <Button Grid.Column="1" Width="100" Height="25" Content="取消" HorizontalAlignment="Left" Margin="20,0,0,0" VerticalAlignment="Center" IsCancel="True"  Background="White"></Button>
+
+            </Grid>
+        </Grid>
+
+    </Grid>
+</Window>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+