Files
SzmediTools/Szmedi.RvKits/ModelManager/MaterialBatchWin.xaml
2025-09-19 09:18:09 +08:00

174 lines
9.3 KiB
XML

<controls:MaterialWindow
x:Class="Szmedi.RvKits.ModelManager.MaterialBatchWin"
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:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
xmlns:local="clr-namespace:Szmedi.RvKits.ModelManager"
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
Title="土建材质"
Width="350"
Height="300"
d:DataContext="{d:DesignInstance local:MaterialBatchViewModel}"
SizeToContent="Height"
mc:Ignorable="d">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Closing">
<i:InvokeCommandAction Command="{Binding CloseWinCommand}" />
</i:EventTrigger>
</i:Interaction.Triggers>
<controls:MaterialWindow.Resources>
<ResourceDictionary Source="pack://application:,,,/Szmedi.RvKits;component/WPFUI.xaml" />
</controls:MaterialWindow.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<UniformGrid HorizontalAlignment="Center" Rows="1">
<TextBlock Text="标准材质" />
<ToggleButton x:Name="SwitchToggleButton" Style="{StaticResource MaterialDesignSwitchToggleButton}" />
<TextBlock Text="自定义材质" />
</UniformGrid>
<GroupBox
Grid.Row="1"
Margin="5"
Header="标准材质批处理"
Visibility="{Binding IsChecked, ElementName=SwitchToggleButton, Converter={x:Static materialDesign:BooleanToVisibilityConverter.NotCollapsedInstance}}">
<StackPanel>
<ComboBox x:Name="CbMaterial">
<ComboBoxItem Content="混凝土" IsSelected="True" />
<ComboBoxItem Content="钢" />
</ComboBox>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<StackPanel Orientation="Horizontal">
<TextBlock Text="可框选类别:" />
<CheckBox Content="墙" IsChecked="{Binding IsWall}" />
<CheckBox Content="楼板" IsChecked="{Binding IsFloor}" />
<CheckBox Content="结构梁" IsChecked="{Binding IsStructuralFraming}" />
<CheckBox Content="结构柱" IsChecked="{Binding IsStructuralColumn}" />
</StackPanel>
</Grid>
<Button
HorizontalAlignment="Center"
VerticalAlignment="Center"
Command="{Binding ApplyStandardMaterialCommand}"
CommandParameter="{Binding SelectedItem, ElementName=CbMaterial}"
Content="框选应用"
ToolTip="根据选中的分类框选构件应用材质" />
</StackPanel>
</GroupBox>
<GroupBox
Grid.Row="2"
Header="自定义材质批处理"
Visibility="{Binding IsChecked, ElementName=SwitchToggleButton, Converter={x:Static materialDesign:BooleanToVisibilityConverter.CollapsedInstance}}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid Grid.Row="0" Grid.Column="0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<CheckBox
Grid.Column="0"
Content="发光材质"
IsChecked="{Binding IsIllumMaterial}"
ToolTip="获取文档中的发光材质,并保存到桌面" />
<TextBox
x:Name="TbSearch"
Grid.Column="1"
materialDesign:HintAssist.Hint="请输入材质名称搜索"
Text="{Binding SearchText, UpdateSourceTrigger=PropertyChanged}" />
</Grid>
<DataGrid
x:Name="DataGrid"
Grid.Row="1"
Height="200"
d:ItemsSource="{d:SampleData}"
AlternationCount="2"
AutoGenerateColumns="False"
CanUserAddRows="False"
GridLinesVisibility="All"
IsReadOnly="True"
ItemsSource="{Binding FilteredList, Mode=OneWay}"
SelectedItem="{Binding SelectedMaterial, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
SelectionMode="Single">
<!--<DataGrid.Resources>
<Style TargetType="{x:Type DataGridRow}">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="DarkGray" />
</Trigger>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="Teal" />
</Trigger>
</Style.Triggers>
</Style>
</DataGrid.Resources>-->
<!--<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseDoubleClick">
<i:InvokeCommandAction Command="{Binding MaterialEditCommand}" CommandParameter="{Binding ItemsSource, ElementName=ParamDataGrid}" />
</i:EventTrigger>
</i:Interaction.Triggers>-->
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding MaterialCategory}" Header="材质类别" />
<DataGridTextColumn Binding="{Binding Name}" Header="材质名称" />
<DataGridTextColumn Header="着色颜色">
<DataGridTextColumn.CellStyle>
<Style TargetType="{x:Type DataGridCell}">
<Setter Property="Background" Value="{Binding DataContext.Color, Converter={StaticResource ColorToBrushConverter}, RelativeSource={RelativeSource Self}}" />
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
<DataGridTextColumn Header="表面颜色">
<DataGridTextColumn.CellStyle>
<Style TargetType="{x:Type DataGridCell}">
<Setter Property="Background" Value="{Binding DataContext.SurfacePatternColor, Converter={StaticResource ColorToBrushConverter}, RelativeSource={RelativeSource Self}}" />
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
<DataGridTextColumn Header="截面颜色">
<DataGridTextColumn.CellStyle>
<Style TargetType="{x:Type DataGridCell}">
<Setter Property="Background" Value="{Binding DataContext.CutPatternColor, Converter={StaticResource ColorToBrushConverter}, RelativeSource={RelativeSource Self}}" />
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
<StackPanel Grid.Row="2">
<StackPanel Grid.ColumnSpan="2" Orientation="Horizontal">
<TextBlock Text="可框选类别:" />
<CheckBox Content="墙" IsChecked="{Binding IsWall}" />
<CheckBox Content="楼板" IsChecked="{Binding IsFloor}" />
<CheckBox Content="结构梁" IsChecked="{Binding IsStructuralFraming}" />
<CheckBox Content="结构柱" IsChecked="{Binding IsStructuralColumn}" />
</StackPanel>
<Button
Grid.Column="1"
Margin="5,5,5,5"
HorizontalAlignment="Center"
Command="{Binding ApplyCustomMaterialCommand}"
CommandParameter="{Binding SelectedMaterial}"
Content="框选应用"
Cursor="Hand"
ToolTip="选择元素以应用选中材质" />
</StackPanel>
</Grid>
</GroupBox>
</Grid>
</controls:MaterialWindow>