schangxiang@126.com
2025-11-04 f5ed29dc26c7cd952d56ec5721a2efc43cd25992
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
<UserControl x:Class="XHandler.View.MethodProperty.ChoiceAgoAspirateChildProperty"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:local="clr-namespace:XHandler.View.MethodProperty"
             xmlns:str="clr-namespace:XHandler.Properties"
             xmlns:ctrls="clr-namespace:XHandler.Controls"
             mc:Ignorable="d" 
             d:DesignHeight="600" d:DesignWidth="600" Loaded="UserControl_Loaded">
 
    <Grid x:Name="grid">
        <Grid.RowDefinitions>
            <RowDefinition Height="auto" MinHeight="0"/>
            <RowDefinition Height="auto" MinHeight="0"/>
            <RowDefinition Height="auto" MinHeight="0"/>
            <RowDefinition Height="auto" MinHeight="0"/>
            
            <RowDefinition Height="auto"/>
            <RowDefinition Height="auto"/>
            <RowDefinition Height="40"/>
            <RowDefinition Height="auto"/>
            <RowDefinition Height="auto"/>
            <RowDefinition Height="auto"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="120"/>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width=".9*"/>
        </Grid.ColumnDefinitions>
 
        <!--台面位置-->
        <TextBlock Grid.Row="0" x:Name="tbxTablePosTitle" Grid.Column="0" Text="{x:Static str:Resources.strTablePosition}" FontSize="16" 
                                   VerticalAlignment="Top" HorizontalAlignment="Right" Margin="0 5 15 0"/>
        <TextBox Grid.Row="0" Grid.Column="1" x:Name="tbxTablePos" Height="25" FontSize="16" VerticalContentAlignment="Center" BorderThickness="0"
                 Background="{DynamicResource lightGrayBrush}" IsEnabled="False" TextChanged="tbxTablePos_TextChanged"/>
 
        <!--开启挑菌前吸液-->
        <CheckBox x:Name="cbOpenAspirate" Grid.Row="0" Grid.Column="2" Grid.ColumnSpan="2" Margin="100,10,0,0" Content="{x:Static str:Resources.strOpenAspirate}"
                  FontSize="16" IsChecked="{Binding isReset, Mode=TwoWay}" Click="cbOpenAspirate_Click"/>
 
 
        <!--孔位-->
        <TextBlock Grid.Row="1" Grid.Column="0" x:Name="tbxWellPositionTipsTitle" Text="{x:Static str:Resources.strWellPosition}" FontSize="16" 
                                   VerticalAlignment="Top" HorizontalAlignment="Right" Margin="0 5 15 0"/>
        <ctrls:PromptTextBox Grid.Row="1" Grid.Column="1" x:Name="tbxWellPositionTips" Height="25" FontSize="16" VerticalContentAlignment="Center" BorderThickness="0"
                                  Background="{DynamicResource lightGrayBrush}" Watermark="{x:Static str:Resources.strWellPositionTips}"
                                  TextChanged="tbxWellPositionTips_TextChanged" IsReadOnly="True">
            <ctrls:PromptTextBox.Text>
                <Binding Path="wellarray" UpdateSourceTrigger="PropertyChanged" NotifyOnValidationError="True" >
                    <Binding.ValidationRules>
                        <local:AspirateValidationRule  ValidateType="tbxWellPositionTips"/>
                    </Binding.ValidationRules>
                </Binding>
            </ctrls:PromptTextBox.Text>
        </ctrls:PromptTextBox>
        <TextBlock Grid.Row="1" Grid.RowSpan="3" x:Name="tbkErrorWellPosition" Grid.Column="2" Text="{Binding  ElementName=tbxWellPositionTips,Path=(Validation.Errors)[0].ErrorContent}" Foreground="Red" FontSize="16" 
                                   VerticalAlignment="Top" HorizontalAlignment="Left" Margin="5 5 5 0"/>
        <!--目前不支持选择方向-->
        <StackPanel Grid.Row="1" Grid.Column="2" Orientation="Horizontal" Visibility="Collapsed">
            <RadioButton Content="{x:Static str:Resources.strHorizontal}" VerticalAlignment="Center" Margin="20 0"/>
            <RadioButton Content="{x:Static str:Resources.strVertical}" VerticalAlignment="Center"/>
        </StackPanel>
 
        <!--注: 需先选择板位-->
        <TextBlock Grid.Row="2" Grid.Column="1" x:Name="wellPlateSelectTip" Text="{x:Static str:Resources.strCommentSelectPlate}" FontSize="16" 
                                   VerticalAlignment="Top" HorizontalAlignment="Left" Margin="0 5 15 0" Foreground="Gray"/>
 
        <!--板位选择控件-->
        <ctrls:WellPlate x:Name="wellPlate" Grid.Row="3" Grid.Column="1" Grid.ColumnSpan="2" HorizontalAlignment="Left" Margin="0 5"
                             Selection="{Binding wellarray, Mode=TwoWay}"/>
 
        <!--每孔体积 (μL)-->
        <TextBlock Grid.Row="4" Grid.Column="0" Text="{x:Static str:Resources.strVolumnPerWellWithUnit}" FontSize="16" 
                                   VerticalAlignment="Top" HorizontalAlignment="Right" Margin="0 5 15 0"/>
        <TextBox Grid.Row="4" Grid.Column="1" x:Name="tbxWellvolume" Height="30" FontSize="16" VerticalContentAlignment="Center" HorizontalAlignment="Left" Background="{DynamicResource lightGrayBrush}"
                                 BorderThickness="0" TextChanged="tbxWellvolume_TextChanged" Width="120">
            <TextBox.Text>
                <Binding Path="wellvolume" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged" NotifyOnValidationError="True" >
                    <Binding.ValidationRules>
                        <local:AspirateValidationRule  ValidateType="tbxWellvolume"/>
                    </Binding.ValidationRules>
                </Binding>
            </TextBox.Text>
        </TextBox>
        <TextBlock Grid.Row="4" x:Name="tbkErrorWellVolume" Grid.Column="2" Text="{Binding  ElementName=tbxWellvolume,Path=(Validation.Errors)[0].ErrorContent}" Foreground="Red" FontSize="16" 
                                   VerticalAlignment="Center" HorizontalAlignment="Left" Margin="5 5 5 0"/>
 
        <!--液体-->
        <TextBlock Grid.Row="6" Grid.Column="0" Text="{x:Static str:Resources.strLiquid}" FontSize="16" 
                                   VerticalAlignment="Center" HorizontalAlignment="Right" Margin="0 5 15 0"/>
        <StackPanel Grid.Row="6" Grid.Column="1" Grid.ColumnSpan="2" Orientation="Horizontal" >
            <ComboBox x:Name="cbLiquidType1"  Height="30" Width="120" BorderThickness="0" Background="{DynamicResource lightGrayBrush}" IsEditable="False"
                                      DisplayMemberPath="liquid_type_name" SelectedValuePath="liquid_type_id" SelectionChanged="cbLiquidType1_SelectionChanged"/>
            <ComboBox x:Name="cbLiquidRange1" Height="30" Width="120" BorderThickness="0" Background="{DynamicResource lightGrayBrush}" Margin="20 0"
                                      DisplayMemberPath="liquid_range_name" SelectedValuePath="liquid_range_id" SelectionChanged="cbLiquidRange1_SelectionChanged" IsEditable="False"/>
            <ComboBox x:Name="cbLiquid1" Height="30" Width="200" BorderThickness="0" Background="{DynamicResource lightGrayBrush}"
                                      DisplayMemberPath="liquid_name" SelectedValuePath="liquid_id" SelectionChanged="cbLiquid1_SelectionChanged" IsEditable="False"/>
        </StackPanel>
    </Grid>
</UserControl>