Files
Mikrotik-Installer/src/MikrotikInstaller.App/Views/Controls/ExpertEditorView.xaml
T
adminandClaude Opus 5.5 bb08bb84a8
Build / build (push) Canceled after 0s
Uebersicht: Knoten direkt bearbeiten; Editor als gemeinsamer Baustein (#24)
- ExpertEditorViewModel/ExpertEditorView aus dem Experte-Bereich ausgelagert (Feldhilfen,
  weitere Parameter, Befehlsvorschau, Sicherung vor der ersten Aenderung)
- In der Uebersicht 'Bearbeiten' fuer Interfaces, IP-Adressen, DHCP-Server und
  Firewall-/NAT-Regeln (nur mit 'Professioneller Netzwerker'); Knoten tragen Menuepfad und
  Erkennungsmerkmale, nach dem Speichern wird die Uebersicht neu geladen

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 07:21:17 +02:00

63 lines
4.7 KiB
XML

<UserControl x:Class="MikrotikInstaller.App.Views.Controls.ExpertEditorView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:ui="http://schemas.lepo.co/wpfui/2022/xaml"
xmlns:controls="clr-namespace:MikrotikInstaller.App.Views.Controls">
<!-- DataContext: ExpertEditorViewModel. -->
<Border Background="{DynamicResource ControlFillColorSecondaryBrush}" CornerRadius="8" Padding="14" Margin="0,0,0,12">
<StackPanel>
<TextBlock FontSize="16" FontWeight="SemiBold" Margin="0,0,0,10">
<Run Text="{Binding Title, Mode=OneWay}" />
<Run Text="{Binding Path, Mode=OneWay}" FontSize="12" FontFamily="Consolas" Foreground="{DynamicResource TextFillColorSecondaryBrush}" />
</TextBlock>
<ItemsControl ItemsSource="{Binding Fields}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid Margin="0,0,0,8">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="200" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
<TextBlock Text="{Binding Label}" TextWrapping="Wrap" MaxWidth="170" />
<controls:InfoHint Text="{Binding Help}" />
</StackPanel>
<ui:TextBox Grid.Column="1" Text="{Binding Value, UpdateSourceTrigger=PropertyChanged}"
Visibility="{Binding IsText, Converter={StaticResource BoolToVisibilityConverter}}" />
<ComboBox Grid.Column="1" IsEditable="True" ItemsSource="{Binding Options}" Text="{Binding Value, UpdateSourceTrigger=PropertyChanged}"
Visibility="{Binding HasOptions, Converter={StaticResource BoolToVisibilityConverter}}" />
<CheckBox Grid.Column="1" IsChecked="{Binding IsChecked}"
Visibility="{Binding IsBool, Converter={StaticResource BoolToVisibilityConverter}}" />
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
<Border BorderBrush="{DynamicResource DividerStrokeColorDefaultBrush}" BorderThickness="1" CornerRadius="6" Padding="10" Margin="0,4,0,10">
<StackPanel>
<StackPanel Orientation="Horizontal" Margin="0,0,0,4">
<TextBlock Text="Weitere Parameter (eine Zeile je name=wert)" />
<controls:InfoHint Text="Für Felder, die oben nicht aufgeführt sind, z. B. „comment=Gäste“. Die Namen entsprechen den RouterOS-Parametern." />
</StackPanel>
<ui:TextBox Text="{Binding ExtraParameters, UpdateSourceTrigger=PropertyChanged}" AcceptsReturn="True" MinLines="2" FontFamily="Consolas" />
</StackPanel>
</Border>
<TextBlock Text="Wird ausgeführt:" FontWeight="SemiBold" Margin="0,0,0,4"
Visibility="{Binding PreviewText, Converter={StaticResource StringToVisibilityConverter}}" />
<TextBlock Text="{Binding PreviewText}" FontFamily="Consolas" TextWrapping="Wrap" Margin="0,0,0,10"
Visibility="{Binding PreviewText, Converter={StaticResource StringToVisibilityConverter}}" />
<TextBlock Text="Keine Änderung — nichts zu speichern." FontSize="12" Margin="0,0,0,10" Foreground="{DynamicResource TextFillColorSecondaryBrush}"
Visibility="{Binding PreviewText, Converter={StaticResource NullToVisibilityConverter}, ConverterParameter=Invert}" />
<TextBlock Text="{Binding ErrorMessage}" TextWrapping="Wrap" Foreground="{StaticResource MikrotikRedBrush}" Margin="0,0,0,10"
Visibility="{Binding ErrorMessage, Converter={StaticResource StringToVisibilityConverter}}" />
<StackPanel Orientation="Horizontal">
<ui:Button Content="Speichern" Appearance="Primary" Margin="0,0,8,0" Command="{Binding SaveCommand}" />
<ui:Button Content="Schließen" Command="{Binding CloseCommand}" />
<ui:ProgressRing IsIndeterminate="True" Width="18" Height="18" Margin="12,0,0,0"
Visibility="{Binding IsSaving, Converter={StaticResource BoolToVisibilityConverter}}" />
</StackPanel>
</StackPanel>
</Border>
</UserControl>