268 lines
16 KiB
XML
268 lines
16 KiB
XML
<Window x:Class="Laservall.Solidworks.Windows.ItemsPropWindow"
|
|
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:Laservall.Solidworks.Windows"
|
|
xmlns:model="clr-namespace:Laservall.Solidworks.Model"
|
|
mc:Ignorable="d"
|
|
Loaded="Window_Loaded"
|
|
Title="BOM 物料清单" Height="640" Width="1200"
|
|
FontFamily="Microsoft YaHei UI" FontSize="13">
|
|
<Window.Resources>
|
|
<BooleanToVisibilityConverter x:Key="BoolToVisibilityConverter" />
|
|
<local:LevelToMarginConverter x:Key="LevelToMarginConverter" />
|
|
<local:ExpandIconConverter x:Key="ExpandIconConverter" />
|
|
<Style x:Key="ToolbarBtn" TargetType="Button">
|
|
<Setter Property="Padding" Value="14,6"/>
|
|
<Setter Property="Margin" Value="3,0"/>
|
|
<Setter Property="FontSize" Value="13"/>
|
|
<Setter Property="Background" Value="#FAFAFA"/>
|
|
<Setter Property="BorderBrush" Value="#D0D0D0"/>
|
|
<Setter Property="BorderThickness" Value="1"/>
|
|
<Setter Property="Cursor" Value="Hand"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="Button">
|
|
<Border x:Name="border"
|
|
Background="{TemplateBinding Background}"
|
|
BorderBrush="{TemplateBinding BorderBrush}"
|
|
BorderThickness="{TemplateBinding BorderThickness}"
|
|
CornerRadius="4"
|
|
Padding="{TemplateBinding Padding}"
|
|
SnapsToDevicePixels="True">
|
|
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
|
</Border>
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter TargetName="border" Property="Background" Value="#E8F0FE"/>
|
|
<Setter TargetName="border" Property="BorderBrush" Value="#B0C4DE"/>
|
|
</Trigger>
|
|
<Trigger Property="IsPressed" Value="True">
|
|
<Setter TargetName="border" Property="Background" Value="#D0E0F8"/>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
<Style x:Key="ToolbarToggleBtn" TargetType="ToggleButton">
|
|
<Setter Property="Padding" Value="14,6"/>
|
|
<Setter Property="Margin" Value="3,0"/>
|
|
<Setter Property="FontSize" Value="13"/>
|
|
<Setter Property="Background" Value="#FAFAFA"/>
|
|
<Setter Property="BorderBrush" Value="#D0D0D0"/>
|
|
<Setter Property="BorderThickness" Value="1"/>
|
|
<Setter Property="Cursor" Value="Hand"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="ToggleButton">
|
|
<Border x:Name="border"
|
|
Background="{TemplateBinding Background}"
|
|
BorderBrush="{TemplateBinding BorderBrush}"
|
|
BorderThickness="{TemplateBinding BorderThickness}"
|
|
CornerRadius="4"
|
|
Padding="{TemplateBinding Padding}"
|
|
SnapsToDevicePixels="True">
|
|
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
|
</Border>
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter TargetName="border" Property="Background" Value="#E8F0FE"/>
|
|
<Setter TargetName="border" Property="BorderBrush" Value="#B0C4DE"/>
|
|
</Trigger>
|
|
<Trigger Property="IsChecked" Value="True">
|
|
<Setter TargetName="border" Property="Background" Value="#D0E0F8"/>
|
|
<Setter TargetName="border" Property="BorderBrush" Value="#0078D7"/>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
</Window.Resources>
|
|
<Grid>
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="*"/>
|
|
</Grid.RowDefinitions>
|
|
|
|
<!-- Loading overlay -->
|
|
<Border
|
|
Grid.Row="0"
|
|
Grid.RowSpan="2"
|
|
Panel.ZIndex="99"
|
|
Background="#66424242"
|
|
Visibility="{Binding IsLoading, Converter={StaticResource BoolToVisibilityConverter}}">
|
|
<Border
|
|
Width="380"
|
|
Padding="24"
|
|
Background="White"
|
|
CornerRadius="8"
|
|
HorizontalAlignment="Center"
|
|
VerticalAlignment="Center">
|
|
<StackPanel>
|
|
<TextBlock
|
|
Margin="0,0,0,14"
|
|
FontSize="15"
|
|
Text="{Binding LoadingText}"
|
|
TextAlignment="Center"
|
|
TextWrapping="Wrap" />
|
|
<ProgressBar
|
|
Height="18"
|
|
Minimum="0"
|
|
Maximum="{Binding LoadingProgressMaximum}"
|
|
Value="{Binding LoadingProgress}" />
|
|
<TextBlock
|
|
Margin="0,8,0,0"
|
|
FontSize="12"
|
|
Foreground="#666"
|
|
HorizontalAlignment="Right">
|
|
<Run Text="{Binding LoadingProgress, StringFormat={}{0:0}}" />
|
|
<Run Text=" / " />
|
|
<Run Text="{Binding LoadingProgressMaximum, StringFormat={}{0:0}}" />
|
|
</TextBlock>
|
|
</StackPanel>
|
|
</Border>
|
|
</Border>
|
|
|
|
<!-- Toolbar -->
|
|
<Border Grid.Row="0" Background="#FDFDFD" BorderBrush="#E8E8E8" BorderThickness="0,0,0,1" Padding="8,7">
|
|
<WrapPanel Orientation="Horizontal" VerticalAlignment="Center">
|
|
<TextBlock Text="搜索:" VerticalAlignment="Center" Margin="4,0,2,0" FontSize="13"/>
|
|
<TextBox x:Name="SearchBox" MinWidth="200" Height="30" FontSize="13"
|
|
Padding="6,0" Margin="0,0,6,0" VerticalContentAlignment="Center"
|
|
TextChanged="SearchBox_TextChanged"/>
|
|
<ToggleButton x:Name="FlatViewToggle" Content="平面视图"
|
|
Style="{StaticResource ToolbarToggleBtn}"
|
|
IsChecked="{Binding IsFlatView, Mode=TwoWay}"
|
|
Checked="FlatViewToggle_Changed" Unchecked="FlatViewToggle_Changed"/>
|
|
<Button x:Name="ExpandAllBtn" Content="全部展开"
|
|
Style="{StaticResource ToolbarBtn}" Click="ExpandAll_Click"/>
|
|
<Button x:Name="CollapseAllBtn" Content="全部收起"
|
|
Style="{StaticResource ToolbarBtn}" Click="CollapseAll_Click"/>
|
|
<Button Content="列配置" Style="{StaticResource ToolbarBtn}" Click="ColumnConfig_Click"/>
|
|
<Button Content="保存修改" Style="{StaticResource ToolbarBtn}" Click="SaveChanges_Click"/>
|
|
<Button Content="导出Excel" Style="{StaticResource ToolbarBtn}" Click="ExportExcel_Click"/>
|
|
</WrapPanel>
|
|
</Border>
|
|
|
|
<!-- DataGrid -->
|
|
<DataGrid x:Name="BomDataGrid"
|
|
Grid.Row="1"
|
|
ItemsSource="{Binding BomItems}"
|
|
AutoGenerateColumns="False"
|
|
CanUserSortColumns="True"
|
|
CanUserReorderColumns="True"
|
|
CanUserResizeColumns="True"
|
|
SelectionMode="Extended"
|
|
SelectionUnit="FullRow"
|
|
GridLinesVisibility="All"
|
|
AlternatingRowBackground="#F8F9FA"
|
|
Background="White"
|
|
HeadersVisibility="Column"
|
|
HorizontalGridLinesBrush="#ECECEC"
|
|
VerticalGridLinesBrush="#ECECEC"
|
|
RowHeaderWidth="0"
|
|
FontSize="13"
|
|
RowHeight="34"
|
|
CellEditEnding="BomDataGrid_CellEditEnding"
|
|
Margin="8,4,8,8">
|
|
<DataGrid.ColumnHeaderStyle>
|
|
<Style TargetType="DataGridColumnHeader">
|
|
<Setter Property="Background" Value="#F0F2F5"/>
|
|
<Setter Property="Foreground" Value="#333"/>
|
|
<Setter Property="FontWeight" Value="SemiBold"/>
|
|
<Setter Property="FontSize" Value="13"/>
|
|
<Setter Property="Padding" Value="8,7"/>
|
|
<Setter Property="BorderBrush" Value="#DDE1E6"/>
|
|
<Setter Property="BorderThickness" Value="0,0,1,1"/>
|
|
</Style>
|
|
</DataGrid.ColumnHeaderStyle>
|
|
<DataGrid.RowStyle>
|
|
<Style TargetType="DataGridRow">
|
|
<Setter Property="Visibility" Value="Visible"/>
|
|
<Setter Property="FontSize" Value="13"/>
|
|
<Style.Triggers>
|
|
<DataTrigger Binding="{Binding IsVisible}" Value="False">
|
|
<Setter Property="Visibility" Value="Collapsed"/>
|
|
</DataTrigger>
|
|
<Trigger Property="IsSelected" Value="True">
|
|
<Setter Property="Foreground" Value="White"/>
|
|
</Trigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</DataGrid.RowStyle>
|
|
<DataGrid.CellStyle>
|
|
<Style TargetType="DataGridCell">
|
|
<Setter Property="Padding" Value="6,0"/>
|
|
<Setter Property="VerticalAlignment" Value="Center"/>
|
|
<Style.Triggers>
|
|
<Trigger Property="IsSelected" Value="True">
|
|
<Setter Property="Foreground" Value="White"/>
|
|
<Setter Property="Background" Value="#0078D7"/>
|
|
</Trigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</DataGrid.CellStyle>
|
|
<DataGrid.Columns>
|
|
<DataGridTemplateColumn x:Name="LevelColumn" Header="层级" Width="140" IsReadOnly="True">
|
|
<DataGridTemplateColumn.CellTemplate>
|
|
<DataTemplate>
|
|
<StackPanel Orientation="Horizontal"
|
|
Margin="{Binding Level, Converter={StaticResource LevelToMarginConverter}}"
|
|
VerticalAlignment="Center">
|
|
<ToggleButton Width="20" Height="20" Margin="0,0,4,0"
|
|
IsChecked="{Binding IsExpanded, UpdateSourceTrigger=PropertyChanged}"
|
|
Click="ToggleExpand_Click"
|
|
Visibility="{Binding HasChildren, Converter={StaticResource BoolToVisibilityConverter}}"
|
|
Background="Transparent" BorderBrush="Transparent">
|
|
<ToggleButton.Style>
|
|
<Style TargetType="ToggleButton">
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="ToggleButton">
|
|
<Border Background="{TemplateBinding Background}"
|
|
BorderBrush="{TemplateBinding BorderBrush}"
|
|
BorderThickness="0">
|
|
<TextBlock x:Name="Arrow" Text="▶" FontSize="11"
|
|
HorizontalAlignment="Center" VerticalAlignment="Center"
|
|
RenderTransformOrigin="0.5,0.5">
|
|
<TextBlock.RenderTransform>
|
|
<RotateTransform Angle="0"/>
|
|
</TextBlock.RenderTransform>
|
|
</TextBlock>
|
|
</Border>
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="IsChecked" Value="True">
|
|
<Setter TargetName="Arrow" Property="RenderTransform">
|
|
<Setter.Value>
|
|
<RotateTransform Angle="90"/>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
</ToggleButton.Style>
|
|
</ToggleButton>
|
|
<TextBlock Text="{Binding LevelDisplay}" VerticalAlignment="Center"/>
|
|
</StackPanel>
|
|
</DataTemplate>
|
|
</DataGridTemplateColumn.CellTemplate>
|
|
</DataGridTemplateColumn>
|
|
<DataGridTextColumn x:Name="DrawingNoColumn" Header="图号" Binding="{Binding DrawingNo}" Width="160" IsReadOnly="True"/>
|
|
<DataGridTextColumn x:Name="ConfigNameColumn" Header="零件名称" Binding="{Binding ConfigName}" Width="140" IsReadOnly="True"/>
|
|
<DataGridTextColumn x:Name="ClassificationColumn" Header="属性" Binding="{Binding Classification, Mode=TwoWay, UpdateSourceTrigger=LostFocus}" Width="80"/>
|
|
<DataGridTextColumn x:Name="MaterialPropColumn" Header="材料" Binding="{Binding MaterialProp, Mode=TwoWay, UpdateSourceTrigger=LostFocus}" Width="100"/>
|
|
<DataGridTextColumn x:Name="MaterialColumn" Header="材质" Binding="{Binding Material, Mode=TwoWay, UpdateSourceTrigger=LostFocus}" Width="100"/>
|
|
<DataGridTextColumn x:Name="QuantityColumn" Header="数量" Binding="{Binding Quantity}" Width="60" IsReadOnly="True"/>
|
|
<DataGridCheckBoxColumn x:Name="IsAssemblyColumn" Header="装配体" Binding="{Binding IsAssembly}" Width="60" IsReadOnly="True"/>
|
|
<DataGridCheckBoxColumn x:Name="IsOutSourcingColumn" Header="外购件" Binding="{Binding IsOutSourcing}" Width="60" IsReadOnly="True"/>
|
|
</DataGrid.Columns>
|
|
</DataGrid>
|
|
</Grid>
|
|
</Window>
|