Загрузка данных
<Window x:Class="IfcBimEditor.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:xbim="clr-namespace:Xbim.Presentation;assembly=Xbim.Presentation"
xmlns:local="clr-namespace:IfcBimEditor"
Title="IFC BIM Editor — xBIM" Height="850" Width="1450" MinWidth="1050">
<DockPanel>
<ToolBar DockPanel.Dock="Top">
<Button Click="Open_Click" Padding="12,5">Открыть IFC</Button>
<Button Click="Save_Click" Padding="12,5">Сохранить как…</Button>
<Separator/>
<Button Click="Similar_Click" Padding="12,5">Выделить подобные</Button>
<Button Click="Apply_Click" Padding="12,5">Изменить свойство у выбранных</Button>
<Separator/>
<TextBlock VerticalAlignment="Center" Text="Критерий:" Margin="8,0"/>
<ComboBox x:Name="MatchMode" Width="165" SelectedIndex="0">
<ComboBoxItem Content="IFC-класс"/>
<ComboBoxItem Content="Имя"/>
<ComboBoxItem Content="Тип элемента"/>
</ComboBox>
</ToolBar>
<StatusBar DockPanel.Dock="Bottom"><TextBlock x:Name="StatusText" Text="Откройте IFC-файл"/></StatusBar>
<Grid>
<Grid.ColumnDefinitions><ColumnDefinition Width="290"/><ColumnDefinition Width="*"/><ColumnDefinition Width="340"/></Grid.ColumnDefinitions>
<DockPanel Grid.Column="0" Margin="6">
<TextBlock DockPanel.Dock="Top" Text="Структура IFC" FontWeight="Bold" Margin="4,8"/>
<Grid DockPanel.Dock="Top" Background="#E9EDF3" Margin="0,0,0,3">
<Grid.ColumnDefinitions><ColumnDefinition Width="110"/><ColumnDefinition Width="90"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="Тип" FontWeight="Bold" Margin="5"/>
<TextBlock Grid.Column="1" Text="Название" FontWeight="Bold" Margin="5"/>
<TextBlock Grid.Column="2" Text="Описание" FontWeight="Bold" Margin="5"/>
</Grid>
<TreeView x:Name="IfcTree" SelectedItemChanged="IfcTree_SelectedItemChanged">
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type local:IfcTreeNode}" ItemsSource="{Binding Children}">
<Grid Width="275">
<Grid.ColumnDefinitions><ColumnDefinition Width="110"/><ColumnDefinition Width="90"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="{Binding Type}" TextTrimming="CharacterEllipsis" ToolTip="{Binding Type}"/>
<TextBlock Grid.Column="1" Text="{Binding Name}" TextTrimming="CharacterEllipsis" ToolTip="{Binding Name}"/>
<TextBlock Grid.Column="2" Text="{Binding Description}" TextTrimming="CharacterEllipsis" ToolTip="{Binding Description}"/>
</Grid>
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>
<TextBlock DockPanel.Dock="Bottom" Text="Выберите элемент; поиск подобных выделяет группу для редактирования" TextWrapping="Wrap" Foreground="Gray" Margin="4,8"/>
</DockPanel>
<Border Grid.Column="1" BorderBrush="#CCC" BorderThickness="1" Margin="2">
<xbim:DrawingControl3D x:Name="Viewer"/>
</Border>
<ScrollViewer Grid.Column="2" VerticalScrollBarVisibility="Auto" Margin="10">
<StackPanel>
<TextBlock Text="Редактор свойств" FontSize="18" FontWeight="Bold" Margin="0,0,0,12"/>
<TextBlock x:Name="SelectedCount" Text="Ничего не выбрано" Margin="0,0,0,12"/>
<TextBlock Text="Набор свойств (Pset)" FontWeight="SemiBold"/>
<TextBox x:Name="PsetInput" Text="Pset_Custom" Margin="0,4,0,12"/>
<TextBlock Text="Имя свойства" FontWeight="SemiBold"/>
<TextBox x:Name="PropertyInput" Text="Mark" Margin="0,4,0,12"/>
<TextBlock Text="Значение (строка)" FontWeight="SemiBold"/>
<TextBox x:Name="ValueInput" Margin="0,4,0,12"/>
<CheckBox x:Name="CreateMissing" IsChecked="True" Content="Создать свойство, если отсутствует" Margin="0,0,0,12"/>
<Button Content="Применить к выбранным" Click="Apply_Click" Padding="8"/>
<TextBlock Text="Свойства текущего элемента" FontWeight="Bold" Margin="0,24,0,8"/>
<DataGrid x:Name="PropertiesGrid" IsReadOnly="True" AutoGenerateColumns="True"
Height="360" CanUserAddRows="False"/>
<TextBlock TextWrapping="Wrap" Foreground="Gray" Margin="0,12,0,0"
Text="Изменения записываются в модель в памяти. Для сохранения используйте «Сохранить как…». Общие Pset отделяются от невыбранных объектов."/>
</StackPanel>
</ScrollViewer>
</Grid>
</DockPanel>
</Window>