Files
SzmediTools/Szmedi.RvKits/MEPTools/FacilityInfoProcessView.xaml
2026-02-23 11:21:51 +08:00

360 lines
19 KiB
XML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<controls:MaterialWindow
x:Class="Szmedi.RvKits.MEPTools.FacilityInfoProcessView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:controls="clr-namespace:Szmedi.RvKits.Controls"
xmlns:conv="clr-namespace:Szmedi.RvKits.Converters"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:Szmedi.RvKits.MEPTools"
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
Title="设备信息"
Width="900"
Height="600"
d:DataContext="{d:DesignInstance Type=local:FacilityInfoProcessViewModel}"
mc:Ignorable="d">
<controls:MaterialWindow.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/Szmedi.RvKits;component/WPFUI.xaml" />
</ResourceDictionary.MergedDictionaries>
<Style x:Key="CenteredTextBlockStyle" TargetType="{x:Type TextBlock}">
<Setter Property="VerticalAlignment" Value="Center" />
</Style>
<conv:NullOrEmptyToBooleanConverter x:Key="NullOrEmptyToBooleanConverter" />
</ResourceDictionary>
</controls:MaterialWindow.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" MinWidth="200" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="250" MinWidth="100" />
</Grid.ColumnDefinitions>
<GroupBox materialDesign:GroupBoxAssist.HeaderPadding="4" Header="设备表">
<DataGrid
x:Name="Facilities"
Margin="-4"
d:ItemsSource="{d:SampleData ItemCount=5}"
materialDesign:DataGridAssist.CellPadding="8,0"
materialDesign:DataGridAssist.ColumnHeaderPadding="6"
AutoGenerateColumns="False"
CanUserAddRows="False"
FrozenColumnCount="2"
ItemsSource="{Binding Items}"
RowDetailsVisibilityMode="VisibleWhenSelected"
SelectedItem="{Binding SelectedFacility, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Setter Property="ToolTip" Value="{Binding ErrorMessage}" />
<Setter Property="Background" Value="Transparent" />
<Style.Triggers>
<DataTrigger Binding="{Binding ErrorMessage, Converter={StaticResource NullOrEmptyToBooleanConverter}}" Value="True">
<Setter Property="Background" Value="IndianRed" />
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
<DataGrid.RowDetailsTemplate>
<DataTemplate DataType="local:FacilityItem">
<GroupBox materialDesign:GroupBoxAssist.HeaderPadding="4" Header="参数列表">
<ItemsControl d:ItemsSource="{d:SampleData ItemCount=5}" ItemsSource="{Binding Parameters}">
<ItemsControl.ItemTemplate>
<DataTemplate DataType="local:ParameterItem">
<TextBox
Padding="2"
HorizontalAlignment="Left"
VerticalContentAlignment="Center"
materialDesign:HintAssist.IsFloating="False"
materialDesign:TextFieldAssist.PrefixText="{Binding Name, StringFormat={}{0}}"
Style="{StaticResource MaterialDesignTextBox}"
Text="{Binding Value, UpdateSourceTrigger=PropertyChanged}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</GroupBox>
</DataTemplate>
</DataGrid.RowDetailsTemplate>
<DataGrid.Columns>
<DataGridCheckBoxColumn Binding="{Binding IsSelected}">
<DataGridCheckBoxColumn.Header>
<CheckBox
VerticalContentAlignment="Center"
Content="全选"
IsChecked="{Binding DataContext.IsAllItemsSelected, RelativeSource={RelativeSource AncestorType=DataGrid}}" />
</DataGridCheckBoxColumn.Header>
<DataGridCheckBoxColumn.HeaderStyle>
<Style BasedOn="{StaticResource MaterialDesignDataGridColumnHeader}" TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="HorizontalContentAlignment" Value="Center" />
</Style>
</DataGridCheckBoxColumn.HeaderStyle>
</DataGridCheckBoxColumn>
<DataGridTextColumn
Binding="{Binding Name}"
ElementStyle="{StaticResource CenteredTextBlockStyle}"
Header="设备"
IsReadOnly="True" />
<DataGridTextColumn
Binding="{Binding Brand}"
ElementStyle="{StaticResource CenteredTextBlockStyle}"
Header="品牌"
IsReadOnly="True" />
<DataGridTextColumn
Binding="{Binding Specification}"
ElementStyle="{StaticResource CenteredTextBlockStyle}"
Header="设备型号"
IsReadOnly="True" />
<DataGridTextColumn
Binding="{Binding Stations}"
ElementStyle="{StaticResource CenteredTextBlockStyle}"
Header="部署范围"
IsReadOnly="True" />
<DataGridTemplateColumn Header="关联族">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button
Command="{Binding DataContext.SelectInstanceCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=DataGrid}}"
CommandParameter="{Binding}"
Content="{Binding DisplayText}"
ToolTip="点击按钮重新选择关联到的族" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</GroupBox>
<GridSplitter
Grid.Row="0"
Grid.RowSpan="2"
Grid.Column="1"
Width="5"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Background="Gray"
ShowsPreview="True" />
<Grid Grid.Row="1" Grid.Column="0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<CheckBox
Grid.Row="0"
Grid.Column="0"
Content="包含全线"
IsChecked="{Binding ContainsAllLines}" />
<TextBox
Grid.Row="0"
Grid.Column="1"
materialDesign:HintAssist.Hint="搜索设备名、品牌、型号、部署范围"
Text="{Binding SearchText, UpdateSourceTrigger=PropertyChanged}" />
</Grid>
<!--<Grid Grid.Column="2">
<Grid.RowDefinitions>
<RowDefinition Height="*" MinHeight="100" />
<RowDefinition Height="Auto" />
<RowDefinition Height="200" MinHeight="100" />
</Grid.RowDefinitions>
<GroupBox Header="参数表">
<DataGrid
Margin="-4"
AutoGenerateColumns="False"
CanUserAddRows="False"
ItemsSource="{Binding ElementName=Facilities, Path=SelectedItem.Parameters}">
<DataGrid.Columns>
<DataGridTextColumn
Binding="{Binding Name}"
ElementStyle="{StaticResource CenteredTextBlockStyle}"
Header="参数"
IsReadOnly="True" />
<DataGridTextColumn
Binding="{Binding Value}"
ElementStyle="{StaticResource CenteredTextBlockStyle}"
Header="参数值" />
</DataGrid.Columns>
</DataGrid>
</GroupBox>
<GridSplitter
Grid.Row="1"
Height="5"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Background="Gray"
ShowsPreview="True" />
<GroupBox Grid.Row="2" Header="构件实例表">
<DataGrid
Margin="-4"
AutoGenerateColumns="False"
CanUserAddRows="False"
ItemsSource="{Binding ElementName=Facilities, Path=SelectedItem.Instances}">
<DataGrid.Columns>
<DataGridTextColumn
Binding="{Binding Name}"
ElementStyle="{StaticResource CenteredTextBlockStyle}"
Header="实例名称"
IsReadOnly="True" />
<DataGridTemplateColumn Header="操作">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<UniformGrid Rows="1">
<Button
Command="{Binding DataContext.LocationInstanceCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=DataGrid}}"
CommandParameter="{Binding}"
Content="定位" />
<Button
Command="{Binding DataContext.RemoveInstanceCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=DataGrid}}"
CommandParameter="{Binding}"
Content="移除" />
</UniformGrid>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</GroupBox>
</Grid>-->
<GroupBox
Grid.Row="0"
Grid.Column="2"
materialDesign:GroupBoxAssist.HeaderPadding="4"
Header="构件实例表">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<DataGrid
x:Name="InstancesDG"
Margin="-4"
d:ItemsSource="{d:SampleData ItemCount=5}"
materialDesign:DataGridAssist.CellPadding="8,0"
materialDesign:DataGridAssist.ColumnHeaderPadding="6"
AutoGenerateColumns="False"
CanUserAddRows="False"
ItemsSource="{Binding ElementName=Facilities, Path=SelectedItem.Instances}"
SelectionMode="Extended">
<DataGrid.Columns>
<DataGridTextColumn
Binding="{Binding Id}"
ElementStyle="{StaticResource CenteredTextBlockStyle}"
Header="实例名称"
IsReadOnly="True" />
<DataGridTextColumn
Binding="{Binding Name}"
ElementStyle="{StaticResource CenteredTextBlockStyle}"
Header="实例名称"
IsReadOnly="True" />
<DataGridTemplateColumn Header="操作">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Button
Command="{Binding DataContext.LocationInstanceCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=DataGrid}}"
CommandParameter="{Binding}"
Style="{StaticResource MaterialDesignToolForegroundButton}">
<materialDesign:PackIcon Kind="Show" />
</Button>
<Button
Command="{Binding DataContext.RemoveInstanceCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=DataGrid}}"
CommandParameter="{Binding}"
Style="{StaticResource MaterialDesignToolForegroundButton}">
<materialDesign:PackIcon Kind="Remove" />
</Button>
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
<StackPanel
Grid.Row="1"
Margin="0,10,0,0"
HorizontalAlignment="Right"
VerticalAlignment="Bottom"
Orientation="Horizontal">
<Button
Margin="2,0"
Command="{Binding RemoveAllInstancesCommand}"
Style="{StaticResource MaterialDesignFloatingActionMiniButton}"
ToolTip="移除表中全部实例">
<materialDesign:PackIcon Kind="Delete" />
</Button>
<Button
Margin="2,0"
Command="{Binding RemoveSelectedInstancesCommand}"
CommandParameter="{Binding ElementName=InstancesDG, Path=SelectedItems}"
Style="{StaticResource MaterialDesignFloatingActionMiniButton}"
ToolTip="批量移除表中选中实例">
<materialDesign:PackIcon Kind="SelectionRemove" />
</Button>
<GridSplitter Width="2" Background="Gray" />
<Button
Margin="2,0"
Command="{Binding SelectAllInstancesCommand}"
Style="{StaticResource MaterialDesignFloatingActionMiniButton}"
ToolTip="在Revit中选中全部实例">
<materialDesign:PackIcon Kind="SelectAll" />
</Button>
<Button
Margin="2,0"
Command="{Binding SelectSelectedInstancesCommand}"
CommandParameter="{Binding ElementName=InstancesDG, Path=SelectedItems}"
Style="{StaticResource MaterialDesignFloatingActionMiniButton}"
ToolTip="在Revit中选择表中选中实例">
<materialDesign:PackIcon Kind="SelectGroup" />
</Button>
<GridSplitter Width="2" Background="Gray" />
<Button
Margin="2,0"
Command="{Binding RepickInstancesByRectangleCommand}"
CommandParameter="{Binding SelectedFacility.MappedFamily}"
Style="{StaticResource MaterialDesignFloatingActionMiniButton}"
ToolTip="框选实例附加到构件实例表">
<materialDesign:PackIcon Kind="Select" />
</Button>
<Button
Grid.Row="1"
Margin="2,0"
Command="{Binding RepickSamplingInstancesCommand}"
CommandParameter="{Binding SelectedFacility.MappedFamily}"
Style="{StaticResource MaterialDesignFloatingActionMiniButton}"
ToolTip="点选实例附加到构件实例表可以连续点击按ESC或右键取消">
<materialDesign:PackIcon Kind="CursorHand" />
</Button>
</StackPanel>
</Grid>
</GroupBox>
<UniformGrid
Grid.Row="2"
Grid.Column="2"
Rows="1">
<Button
Command="{Binding BrowserExcelCommand}"
Content="选择设备表"
ToolTip="选择设备信息表" />
<Button
Command="{Binding ProcessModelInfoCommand}"
Content="添加设备信息"
ToolTip="将参数表的参数添加到构件实例表的实例参数" />
</UniformGrid>
<TextBox
Grid.Row="1"
Grid.Column="2"
materialDesign:HintAssist.Hint="搜索构件表"
Text="{Binding SearchInstanceText, UpdateSourceTrigger=PropertyChanged}" />
<TextBox
Grid.Row="2"
Grid.Column="0"
materialDesign:HintAssist.Hint="设备信息表路径"
IsReadOnly="True"
Text="{Binding ExcelPath}" />
</Grid>
</controls:MaterialWindow>