BDU/ATS/Views/SingleStepEdit.xaml

404 lines
28 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<UserControl
x:Class="ATS.Views.SingleStepEdit"
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:local="clr-namespace:ATS.Views"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:converters="clr-namespace:ATS.Converters"
d:DataContext="{d:DesignInstance Type=local:SingleStepEdit}"
d:DesignHeight="450"
d:DesignWidth="800"
mc:Ignorable="d">
<UserControl.Resources>
<converters:FilteredParametersConverter x:Key="FilteredParametersConverter"/>
<converters:HexToDecimalConverter x:Key="HexToDecimalConverter"/>
<!-- 定义转换器资源 -->
</UserControl.Resources>
<Grid>
<GroupBox
Grid.Row="1"
Grid.Column="4"
Header="单步编辑">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
<RowDefinition Height="50" />
</Grid.RowDefinitions>
<!-- 步骤名称 -->
<StackPanel Grid.Row="0">
<StackPanel
Height="30"
Margin="7"
Orientation="Horizontal">
<Label
Width="60"
VerticalAlignment="Bottom"
Content="名称" />
<TextBox
MinWidth="120"
VerticalAlignment="Bottom"
Text="{Binding SelectedStep.Name}" />
</StackPanel>
</StackPanel>
<!-- 合格条件 -->
<StackPanel Grid.Row="1">
<StackPanel
Height="30"
Margin="7"
Orientation="Horizontal">
<Label
Width="60"
VerticalAlignment="Bottom"
Content="合格条件" />
<TextBox
MinWidth="120"
VerticalAlignment="Bottom"
Text="{Binding SelectedStep.OKExpression}" />
</StackPanel>
</StackPanel>
<!-- 合格条件 -->
<StackPanel Grid.Row="2">
<StackPanel
Height="30"
Margin="7"
Orientation="Horizontal">
<Label
Width="60"
VerticalAlignment="Bottom"
Content="跳转"
ToolTip="格式OK跳转序号/NG跳转序号默认为0/0" />
<TextBox
MinWidth="120"
VerticalAlignment="Bottom"
Text="{Binding SelectedStep.ID, Converter={StaticResource ParameterToGotoSettingStringConverter}}" />
</StackPanel>
</StackPanel>
<!-- 备注 -->
<StackPanel Grid.Row="3">
<StackPanel
Height="30"
Margin="7"
Orientation="Horizontal">
<Label
Width="60"
VerticalAlignment="Bottom"
Content="备注" />
<TextBox
MinWidth="120"
VerticalAlignment="Bottom"
Text="{Binding SelectedStep.Description}" />
</StackPanel>
</StackPanel>
<!-- 参数编辑区 -->
<Grid Grid.Row="4">
<Grid.RowDefinitions>
<RowDefinition Height="auto" />
<RowDefinition />
</Grid.RowDefinitions>
<StackPanel Height="30" Orientation="Horizontal">
<Label
Margin="7,0"
VerticalAlignment="Bottom"
Content="参数" />
</StackPanel>
<ScrollViewer
Grid.Row="1"
Margin="40,0,0,0"
HorizontalScrollBarVisibility="Auto"
VerticalScrollBarVisibility="Auto">
<StackPanel>
<ItemsControl ItemsSource="{Binding SelectedStep.Method.Parameters}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100" />
<ColumnDefinition Width="50" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<StackPanel
Grid.Column="0"
Margin="7,7,0,7"
Orientation="Horizontal">
<TextBlock VerticalAlignment="Bottom" Text="{Binding Name}" />
<TextBlock VerticalAlignment="Bottom" Text="(" />
<TextBlock VerticalAlignment="Bottom" Text="{Binding Type.Name}" />
<TextBlock VerticalAlignment="Bottom" Text=")" />
</StackPanel>
<StackPanel
Grid.Column="1"
Margin="7"
Orientation="Horizontal">
<TextBlock
Margin="5,0"
VerticalAlignment="Bottom"
Text="{Binding Category, Converter={StaticResource ParameterCategoryToStringConverter}}" />
</StackPanel>
<StackPanel
Grid.Column="2"
Margin="7"
Orientation="Horizontal">
<!-- 输入参数编辑 -->
<StackPanel
Height="30"
IsEnabled="{Binding Type, Converter={StaticResource ParameterTypeToBoolConverter}}"
Orientation="Horizontal"
Visibility="{Binding Category, Converter={StaticResource ParameterCategoryToVisibilityConverter}}">
<CheckBox VerticalAlignment="Bottom" IsChecked="{Binding IsUseVar}" />
<Grid>
<!-- 常量输入区域 -->
<Grid Visibility="{Binding IsUseVar, Converter={StaticResource BooleanToVisibilityConverter}, ConverterParameter=Inverse}">
<!-- 非枚举类型 -->
<TextBox
Height="22"
MinWidth="120"
VerticalAlignment="Bottom"
Text="{Binding Value, UpdateSourceTrigger=PropertyChanged}"
Visibility="{Binding Type, Converter={StaticResource IsEnumTypeConverter}, ConverterParameter=Collapse}" />
<!-- "{Binding Value, Converter={StaticResource HexToDecimalConverter}, UpdateSourceTrigger=PropertyChanged}" -->
<!-- 枚举类型 -->
<ComboBox
Height="22"
MinWidth="120"
VerticalAlignment="Bottom"
ItemsSource="{Binding Type, Converter={StaticResource EnumValuesConverter}}"
Visibility="{Binding Type, Converter={StaticResource IsEnumTypeConverter}}">
<ComboBox.SelectedItem>
<MultiBinding Converter="{StaticResource EnumValueConverter}">
<Binding Path="Type" />
<Binding Path="Value" />
</MultiBinding>
</ComboBox.SelectedItem>
</ComboBox>
</Grid>
<!-- 变量选择框 -->
<ComboBox
Height="22"
MinWidth="120"
VerticalAlignment="Bottom"
SelectedValue="{Binding VariableName}"
SelectedValuePath="Name"
Visibility="{Binding IsUseVar, Converter={StaticResource BooleanToVisibilityConverter}}">
<!-- 修改开始:使用 FilteredParametersConverter -->
<ComboBox.ItemsSource>
<MultiBinding Converter="{StaticResource FilteredParametersConverter}">
<Binding Path="Type" />
<Binding Path="DataContext.Program.Parameters" RelativeSource="{RelativeSource AncestorType=Window}" />
</MultiBinding>
</ComboBox.ItemsSource>
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Name}" />
<TextBlock Text="(" />
<TextBlock Text="{Binding Type.Name, TargetNullValue=Unknown}" />
<TextBlock Text=")" />
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
<!-- 修改结束 -->
</ComboBox>
</Grid>
</StackPanel>
<!-- 输出参数编辑 -->
<StackPanel Height="30" Orientation="Horizontal">
<CheckBox VerticalAlignment="Bottom"
IsChecked="{Binding IsOutputToReport}"
Visibility="{Binding Category, Converter={StaticResource ParameterCategoryToVisibilityConverter}, ConverterParameter=Inverse}"
ToolTip="勾选后,该输出参数的结果会写入到报告中" />
<ComboBox
Width="120"
Margin="0,0,0,0"
VerticalAlignment="Bottom"
SelectedValue="{Binding VariableName}"
SelectedValuePath="Name"
Visibility="{Binding Category, Converter={StaticResource ParameterCategoryToVisibilityConverter}, ConverterParameter=Inverse}">
<!-- 修改开始:使用 FilteredParametersConverter -->
<ComboBox.ItemsSource>
<MultiBinding Converter="{StaticResource FilteredParametersConverter}">
<Binding Path="Type" />
<Binding Path="DataContext.Program.Parameters" RelativeSource="{RelativeSource AncestorType=Window}" />
</MultiBinding>
</ComboBox.ItemsSource>
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Name}" />
<TextBlock Text="(" />
<TextBlock Text="{Binding Type.Name, TargetNullValue=Unknown}" />
<TextBlock Text=")" />
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
<!-- 修改结束 -->
</ComboBox>
</StackPanel>
</StackPanel>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
<ItemsControl ItemsSource="{Binding SelectedStep.SubProgram.Parameters}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid Visibility="{Binding Category, Converter={StaticResource ParameterCategoryToVisibilityConverter}, ConverterParameter=Item}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100" />
<ColumnDefinition Width="50" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<StackPanel
Grid.Column="0"
Margin="7,7,0,7"
Orientation="Horizontal">
<TextBlock VerticalAlignment="Bottom" Text="{Binding Name}" />
<TextBlock VerticalAlignment="Bottom" Text="(" />
<TextBlock VerticalAlignment="Bottom" Text="{Binding Type.Name}" />
<TextBlock VerticalAlignment="Bottom" Text=")" />
</StackPanel>
<StackPanel
Grid.Column="1"
Margin="7"
Orientation="Horizontal">
<TextBlock
Margin="5,0"
VerticalAlignment="Bottom"
Text="{Binding Category, Converter={StaticResource ParameterCategoryToStringConverter}}" />
</StackPanel>
<StackPanel
Grid.Column="2"
Margin="7"
Orientation="Horizontal">
<!-- 输入参数编辑 -->
<StackPanel
Height="30"
Orientation="Horizontal"
Visibility="{Binding Category, Converter={StaticResource ParameterCategoryToVisibilityConverter}}">
<CheckBox VerticalAlignment="Bottom" IsChecked="{Binding IsUseVar}" />
<Grid>
<!-- 常量输入区域 -->
<Grid Visibility="{Binding IsUseVar, Converter={StaticResource BooleanToVisibilityConverter}, ConverterParameter=Inverse}">
<!-- 非枚举类型 -->
<TextBox
Height="22"
MinWidth="120"
VerticalAlignment="Bottom"
Text="{Binding Value, UpdateSourceTrigger=PropertyChanged}"
Visibility="{Binding Type, Converter={StaticResource IsEnumTypeConverter}, ConverterParameter=Collapse}" />
<!-- 枚举类型 -->
<ComboBox
Height="22"
MinWidth="120"
VerticalAlignment="Bottom"
ItemsSource="{Binding Type, Converter={StaticResource EnumValuesConverter}}"
SelectedItem="{Binding Value}"
Visibility="{Binding Type, Converter={StaticResource IsEnumTypeConverter}}" />
</Grid>
<!-- 变量选择框 -->
<ComboBox
Height="22"
MinWidth="120"
VerticalAlignment="Bottom"
SelectedValue="{Binding VariableName}"
SelectedValuePath="Name"
Visibility="{Binding IsUseVar, Converter={StaticResource BooleanToVisibilityConverter}}">
<!-- 修改开始:使用 FilteredParametersConverter -->
<ComboBox.ItemsSource>
<MultiBinding Converter="{StaticResource FilteredParametersConverter}">
<Binding Path="Type" />
<Binding Path="DataContext.Program.Parameters" RelativeSource="{RelativeSource AncestorType=Window}" />
</MultiBinding>
</ComboBox.ItemsSource>
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Name}" />
<TextBlock Text="(" />
<TextBlock Text="{Binding Type.Name, TargetNullValue=Unknown}" />
<TextBlock Text=")" />
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
<!-- 修改结束 -->
</ComboBox>
</Grid>
</StackPanel>
<!-- 输出参数编辑 -->
<StackPanel Height="30" Orientation="Horizontal">
<CheckBox VerticalAlignment="Bottom" IsChecked="{Binding IsUseVar}" Visibility="{Binding Category, Converter={StaticResource ParameterCategoryToVisibilityConverter}, ConverterParameter=Inverse}" />
<ComboBox
Width="120"
Margin="0,0,0,0"
VerticalAlignment="Bottom"
SelectedValue="{Binding VariableName}"
SelectedValuePath="Name"
Visibility="{Binding Category, Converter={StaticResource ParameterCategoryToVisibilityConverter}, ConverterParameter=Inverse}">
<!-- 修改开始:使用 FilteredParametersConverter -->
<ComboBox.ItemsSource>
<MultiBinding Converter="{StaticResource FilteredParametersConverter}">
<Binding Path="Type" />
<Binding Path="DataContext.Program.Parameters" RelativeSource="{RelativeSource AncestorType=Window}" />
</MultiBinding>
</ComboBox.ItemsSource>
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Name}" />
<TextBlock Text="(" />
<TextBlock Text="{Binding Type.Name, TargetNullValue=Unknown}" />
<TextBlock Text=")" />
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
<!-- 修改结束 -->
</ComboBox>
</StackPanel>
</StackPanel>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
</ScrollViewer>
</Grid>
<!-- 按钮 -->
<StackPanel
Grid.Row="5"
Margin="5,0"
FlowDirection="RightToLeft"
Orientation="Horizontal">
<Button
Width="90"
Click="CancelStepEdit_Click"
Content="取消" />
<Button
Width="90"
Margin="20,0"
Click="SaveStep_Click"
Content="保存" />
</StackPanel>
</Grid>
</GroupBox>
</Grid>
</UserControl>