调整代码

This commit is contained in:
GG Z
2026-02-22 20:03:42 +08:00
parent 2ad3d0fde0
commit 7e2d5be3cd
258 changed files with 2916 additions and 5013 deletions

View File

@@ -0,0 +1,314 @@
<ui:MelWindow
x:Class="ShrlAlgoToolkit.RevitAddins.FamMaster.FamilyLibraryView"
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:local="clr-namespace:ShrlAlgoToolkit.RevitAddins.RvFamily.FamilyLibrary"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:ui="https://github.com/ShrlAlgo/Melskin"
xmlns:famMaster="clr-namespace:ShrlAlgoToolkit.RevitAddins.FamMaster"
Title="本地族库"
Width="1050"
Height="600"
MinWidth="1050"
MinHeight="600"
d:DataContext="{d:DesignInstance Type=famMaster:FamilyLibraryViewModel}"
Icon="{DynamicResource RevitIcon}"
ResizeMode="CanResizeWithGrip"
mc:Ignorable="d">
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/ShrlAlgoToolkit.RevitAddins;component/WPFUI.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="200" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="220" />
</Grid.ColumnDefinitions>
<Button
Grid.Row="0"
Margin="5"
HorizontalAlignment="Stretch"
ui:ControlAssist.Icon="{ui:Icon SymbolValue=Folder}"
Command="{Binding SelectPathCommand}"
Content="打开族目录"
ToolTip="{Binding FamilyPath, Mode=OneWay, StringFormat=族目录:{}{0}}" />
<TreeView
x:Name="FolderTreeView"
Grid.Row="1"
d:ItemsSource="{d:SampleData}"
ItemsSource="{Binding FolderTreeViewItems}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectedItemChanged">
<i:InvokeCommandAction Command="{Binding SelectDirTreeNodeCommand}" CommandParameter="{Binding SelectedItem, RelativeSource={RelativeSource AncestorType={x:Type TreeView}, Mode=FindAncestor}}" />
<!--<behaviors:InvokeCommandAction Command="{Binding SetSelectedItem}" CommandParameter="{Binding SelectedItem, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=TreeView}}" />-->
</i:EventTrigger>
</i:Interaction.Triggers>
</TreeView>
<GridSplitter
Grid.Row="1"
Grid.Column="1"
Width="1"
HorizontalAlignment="Center"
ShowsPreview="True" />
<TextBox
x:Name="SearchBox"
Grid.Row="0"
Grid.Column="2"
Margin="5"
ui:InputAssist.PlaceholderText="请输入搜索关键词"
Cursor="IBeam">
<i:Interaction.Triggers>
<i:EventTrigger EventName="KeyDown">
<i:InvokeCommandAction Command="{Binding SearchFamilyCommand}" CommandParameter="{Binding Text, RelativeSource={RelativeSource AncestorType={x:Type TextBox}, Mode=FindAncestor}}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</TextBox>
<ListView
Grid.Row="1"
Grid.RowSpan="2"
Grid.Column="2"
d:ItemsSource="{d:SampleData}"
ItemsSource="{Binding FamilyPageListViewItems}"
SelectedItem="{Binding SelectedFamily}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectionChanged">
<i:InvokeCommandAction Command="{Binding LvSelectionChangedCommand}" CommandParameter="{Binding SelectedItem, RelativeSource={RelativeSource AncestorType={x:Type ListView}, Mode=FindAncestor}}" />
</i:EventTrigger>
</i:Interaction.Triggers>
<!--<ListView.View>
<GridView>
<GridViewColumn Header="缩略图" >
<GridViewColumn.CellTemplate>
<DataTemplate>
<Image Source="{Binding ImageData}"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn DisplayMemberBinding="{Binding Title}" Header="名称" />
<GridViewColumn DisplayMemberBinding="{Binding Path}" Header="路径" />
<GridViewColumn DisplayMemberBinding="{Binding RevitVersion}" Header="版本" />
<GridViewColumn>
<GridViewColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Button
Command="{Binding DataContext.ImportFamilyCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Window}}"
CommandParameter="{Binding}"
Content="&#xedb7;载入"
FontFamily="{StaticResource BoxIcons}"
ToolTip="将族载入到当前项目" />
<Button
Command="{Binding DataContext.LocationFamilyFileCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Window}}"
CommandParameter="{Binding}"
Content="&#xea90;浏览"
FontFamily="{StaticResource BoxIcons}"
ToolTip="在资源管理器中浏览文件" />
</StackPanel>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>-->
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListViewItem}">
<Border
x:Name="border"
Margin="5"
Background="{TemplateBinding Background}"
BorderBrush="Transparent"
BorderThickness="2"
CornerRadius="5">
<ContentPresenter />
</Border>
<ControlTemplate.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsMouseOver" Value="True" />
<Condition Property="IsSelected" Value="False" />
</MultiTrigger.Conditions>
<Setter TargetName="border" Property="BorderBrush" Value="Gray" />
</MultiTrigger>
<Trigger Property="IsSelected" Value="True">
<Setter TargetName="border" Property="BorderBrush" Value="LightSkyBlue" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListView.ItemContainerStyle>
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Width="{Binding (FrameworkElement.ActualWidth), RelativeSource={RelativeSource AncestorType={x:Type ScrollContentPresenter}}}" />
</ItemsPanelTemplate>
</ListView.ItemsPanel>
<ListView.ItemTemplate>
<DataTemplate>
<ui:Card Padding="0">
<Grid Width="170" Height="210">
<Grid.RowDefinitions>
<RowDefinition Height="170" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Image
Grid.Row="0"
Width="128"
Height="128"
Source="{Binding ImageData}"
Stretch="Uniform"
ToolTip="{Binding ToolTip}" />
<StackPanel
Grid.Row="0"
HorizontalAlignment="Center"
VerticalAlignment="Bottom"
Orientation="Horizontal">
<StackPanel.Style>
<Style TargetType="{x:Type StackPanel}">
<Setter Property="Visibility" Value="Collapsed" />
<Style.Triggers>
<DataTrigger Binding="{Binding IsMouseOver, RelativeSource={RelativeSource AncestorType={x:Type ListViewItem}, Mode=FindAncestor}}" Value="True">
<Setter Property="Visibility" Value="Visible" />
</DataTrigger>
</Style.Triggers>
</Style>
</StackPanel.Style>
<Button
ui:ControlAssist.AppearanceType="Primary"
ui:ControlAssist.Icon="{ui:Icon SymbolValue=ImportContacts}"
Command="{Binding DataContext.ImportFamilyCommand, RelativeSource={RelativeSource AncestorType={x:Type Window}, Mode=FindAncestor}}"
CommandParameter="{Binding}"
Content="载入"
ToolTip="将族载入到当前项目" />
<Button
ui:ControlAssist.AppearanceType="Primary"
ui:ControlAssist.Icon="{ui:Icon SymbolValue=LocationChip}"
Command="{Binding DataContext.LocationFamilyFileCommand, RelativeSource={RelativeSource AncestorType={x:Type Window}, Mode=FindAncestor}}"
CommandParameter="{Binding}"
Content="&#xEA90;定位"
ToolTip="在资源管理器中浏览文件" />
<!--
CommandParameter="{Binding SelectedItem, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ListView}}"
CommandParameter="{Binding DataContext, RelativeSource={RelativeSource Mode=Self}}" 等价于 CommandParameter="{Binding}"
-->
</StackPanel>
<TextBlock
Grid.Row="1"
Width="128"
Text="{Binding Title}"
TextAlignment="Center"
TextWrapping="WrapWithOverflow" />
</Grid>
</ui:Card>
</DataTemplate>
</ListView.ItemTemplate>
<ListView.Template>
<ControlTemplate TargetType="{x:Type ListView}">
<ScrollViewer
x:Name="scr"
HorizontalScrollBarVisibility="Disabled"
VerticalScrollBarVisibility="Auto">
<i:Interaction.Triggers>
<i:EventTrigger EventName="ScrollChanged">
<i:InvokeCommandAction Command="{Binding LvScrollCommand}" CommandParameter="{Binding RelativeSource={RelativeSource AncestorType={x:Type ScrollViewer}, Mode=FindAncestor}}" />
</i:EventTrigger>
</i:Interaction.Triggers>
<WrapPanel IsItemsHost="True" ScrollViewer.CanContentScroll="True" />
</ScrollViewer>
</ControlTemplate>
</ListView.Template>
</ListView>
<GridSplitter
Grid.Row="1"
Grid.Column="3"
Width="1"
HorizontalAlignment="Center"
ShowsPreview="True" />
<DataGrid
Grid.Row="1"
Grid.Column="4"
Margin="5"
d:ItemsSource="{d:SampleData}"
AutoGenerateColumns="False"
CanUserAddRows="False"
IsReadOnly="True"
ItemsSource="{Binding SelectedItem.ParameterDefinitions, ElementName=CbbSymbols, Mode=TwoWay}">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Name}" Header="属性名" />
<DataGridTextColumn Binding="{Binding Value}" Header="属性值" />
</DataGrid.Columns>
</DataGrid>
<!--<StackPanel
Grid.Row="1"
Grid.Column="2"
Margin="5"
HorizontalAlignment="Right"
VerticalAlignment="Top">
<hc:ButtonGroup Style="{StaticResource ButtonGroupSolid}">
<RadioButton IsChecked="True" Style="{StaticResource RadioGroupItemHorizontalFirst}">
<hc:Interaction.Triggers>
<hc:EventTrigger EventName="Checked">
<hc:EventToCommand Command="{Binding ModifyLayout}" CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=RadioButton}}" />
</hc:EventTrigger>
</hc:Interaction.Triggers>
</RadioButton>
<RadioButton Style="{StaticResource RadioGroupItemHorizontalLast}">
<hc:Interaction.Triggers>
<hc:EventTrigger EventName="Checked">
<hc:EventToCommand Command="{Binding ModifyLayout}" CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=RadioButton}}" />
</hc:EventTrigger>
</hc:Interaction.Triggers>
</RadioButton>
</hc:ButtonGroup>
</StackPanel>-->
<ui:StackPanel
Grid.Row="0"
Grid.Column="4"
Orientation="Horizontal">
<ComboBox
x:Name="CbbSymbols"
ui:InputAssist.PlaceholderText="选择族类型"
ui:StackPanel.Fill="Fill"
DisplayMemberPath="Name"
ItemsSource="{Binding SymbolTypes, Mode=TwoWay}"
SelectedItem="{Binding SelectedSymbolType, UpdateSourceTrigger=PropertyChanged}" />
<Button
Grid.Column="1"
Margin="5"
ui:StackPanel.Fill="Auto"
Command="{Binding ImportFamilySymbolCommand}"
Content="&#xEB1F;"
ui:ControlAssist.Icon="{ui:Icon SymbolValue=FrontLoader}"
ToolTip="载入类型" />
</ui:StackPanel>
<TextBlock
Grid.Row="2"
Grid.Column="0"
Margin="5"
Text="{Binding FamilyCount, Mode=OneWay, StringFormat=共计{}{0}个}" />
<ui:Alert
Grid.Row="2"
Grid.Column="2"
Message="{Binding Message}" />
<TextBlock
Grid.Row="2"
Grid.Column="4"
Text="{Binding RevitVersion, Mode=OneWay, StringFormat=当前文件版本Revit \{0\}}" />
</Grid>
</ui:MelWindow>