Files
RevitArchive/RevitKits/ParameterManager/ArchiParamsManagerWin.xaml
2026-02-23 14:58:05 +08:00

140 lines
6.7 KiB
XML

<Window
x:Class="Sai.Common.Shared.ParameterManager.ArchiParamsManagerWin"
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:i="http://schemas.microsoft.com/xaml/behaviors"
xmlns:manager="clr-namespace:Sai.Common.Shared.ParameterManager"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:standardTools="clr-namespace:SZBIM.StandardTools"
Title="建筑参数管理"
Width="450"
Height="600"
MinWidth="400"
MinHeight="600"
d:DataContext="{d:DesignInstance Type=manager:ArchiParamManagerViewModel}"
mc:Ignorable="d">
<Window.Resources>
<ResourceDictionary Source="/Sai.RvKits;component/Styles/WPFUI.xaml" />
</Window.Resources>
<Grid>
<Grid Margin="5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<TreeView x:Name="ParamsTreeView" ItemsSource="{Binding Models}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectedItemChanged">
<i:InvokeCommandAction Command="{Binding TreeItemChanged}"
CommandParameter="{Binding ItemsSource, ElementName=ParamDataGrid}" />
</i:EventTrigger>
</i:Interaction.Triggers>
<TreeView.ItemTemplate>
<HierarchicalDataTemplate DataType="{x:Type standardTools:TreeModel}"
ItemsSource="{Binding Children}">
<StackPanel
x:Name="staTree"
Margin="-2,0,0,0"
Orientation="Horizontal">
<Image VerticalAlignment="Center" Source="{Binding Icon}" />
<TextBlock Text="{Binding Name}" />
</StackPanel>
<HierarchicalDataTemplate.Triggers>
<DataTrigger Binding="{Binding IsChecked}" Value="true">
<Setter TargetName="staTree" Property="Background" Value="White" />
</DataTrigger>
</HierarchicalDataTemplate.Triggers>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
<GridSplitter
Grid.Row="0"
Grid.RowSpan="2"
Grid.Column="0" />
<DataGrid
x:Name="ParamDataGrid"
Grid.Row="0"
Grid.Column="1"
AutoGenerateColumns="False"
CanUserAddRows="False"
ItemsSource="{Binding SelectedItem.Tag, Mode=TwoWay, ElementName=ParamsTreeView}">
<DataGrid.Columns>
<DataGridCheckBoxColumn
Binding="{Binding IsChecked, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
CanUserSort="False">
<DataGridCheckBoxColumn.ElementStyle>
<Style TargetType="CheckBox" />
</DataGridCheckBoxColumn.ElementStyle>
</DataGridCheckBoxColumn>
<DataGridTextColumn
Binding="{Binding PropertyCategory}"
Header="属性类别"
IsReadOnly="True" />
<DataGridTextColumn
Binding="{Binding FullProperty}"
Header="属性名"
IsReadOnly="True" />
<DataGridTextColumn
Binding="{Binding Unit}"
Header="单位"
IsReadOnly="True" />
</DataGrid.Columns>
</DataGrid>
<Button
Grid.Row="1"
Grid.Column="1"
Command="{Binding AddParameters}"
Content="添加参数"
Cursor="Hand"
IsEnabled="{Binding CanAdd}" />
<StackPanel Grid.Row="1" Grid.Column="0">
<RadioButton
Margin="5"
HorizontalAlignment="Left"
Content="项目参数(共享参数)"
IsChecked="{Binding IsSharedProjectParam}"
ToolTip="共享参数作为项目参数,关联到所选族的类别">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<i:InvokeCommandAction Command="{Binding TreeItemChanged}"
CommandParameter="{Binding ItemsSource, ElementName=ParamDataGrid}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</RadioButton>
<RadioButton
Margin="5"
HorizontalAlignment="Left"
Content="族参数(共享参数)"
IsChecked="{Binding IsSharedFamilyParam}"
ToolTip="共享参数作为族参数,关联到所选族">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<i:InvokeCommandAction Command="{Binding TreeItemChanged}"
CommandParameter="{Binding ItemsSource, ElementName=ParamDataGrid}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</RadioButton>
<RadioButton
Margin="5"
HorizontalAlignment="Left"
Content="族参数"
IsChecked="{Binding IsFamilyParam}"
ToolTip="添加族参数,关联到所选族">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<i:InvokeCommandAction Command="{Binding TreeItemChanged}"
CommandParameter="{Binding ItemsSource, ElementName=ParamDataGrid}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</RadioButton>
</StackPanel>
</Grid>
</Grid>
</Window>