Laservall_solidworks_inject/Windows/ItemsPropWindow.xaml

268 lines
16 KiB
Plaintext
Raw Permalink Normal View History

<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>