WPF使用ListBox下获取ListBox.SelectedItems转换List<T>

该代码段展示了如何将控件SelectedItems转换为IList,然后进一步转换为泛型List。如果IList不为空且包含元素,它会将元素类型为XuanzeShihao的项转换并设置对话框结果为true。否则,显示一个错误消息提示用户选择数据。

首先转换为IList;
再就是将IList转换为List

 System.Collections.IList items = (System.Collections.IList)ListBMain.SelectedItems; //首先转换为IList
   if (items != null && items.Count > 0)
                {
                    ListShihaoOut = items.Cast<XuanzeShihao>().ToList();
                    this.DialogResult = true;
                }
                else
                {
                    MessageBox.Show("请选择数据!","系统提示:",MessageBoxButton.OK,MessageBoxImage.Hand);
                } 
<UserControl x:Class="Gumming.Modules.Setting.COTSetView" 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" mc:Ignorable="d" xmlns:local="clr-namespace:Gumming" xmlns:tool="clr-namespace:GummingCommon;assembly=GummingCommon" xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity" d:DesignHeight="700" d:DesignWidth="1000" Background="Transparent" x:Name="rootControl"> <UserControl.Resources> <tool:BoolenToTextConverter x:Key="BoolenToTextConverter"/> <tool:StepTextConverter x:Key="StepBrushConverter"/> <tool:ConditionalDecimalConverter x:Key="ConditionalDecimalConverter"/> <tool:DecimalPrecisionConverter x:Key="DecimalPrecisionConverter"/> <DataTemplate x:Key="PortFieldMapping"> <Border Name="ItemBorder" Height="30" BorderThickness="0" BorderBrush="Black"> <Grid > <Grid.ColumnDefinitions> <ColumnDefinition Width="300"></ColumnDefinition> <ColumnDefinition Width="100"></ColumnDefinition> <!--屏蔽设置--> <!--<ColumnDefinition Width="100"></ColumnDefinition>--> </Grid.ColumnDefinitions> <Border BorderThickness="1,0,0,1" BorderBrush="{DynamicResource DefaultBorderBrush}" > <TextBlock Text="{Binding SettingName, Mode=TwoWay}" Padding="5,0,0,0" HorizontalAlignment="Stretch" VerticalAlignment="Center" FontSize="14"></TextBlock> </Border> <Border Grid.Column="1" BorderThickness="1,0,0,1" BorderBrush="{DynamicResource DefaultBorderBrush}" > <local:FloatBox Style="{DynamicResource EditTextBoxStyle}" Visibility="{Binding InputVisible}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" VerticalContentAlignment="Center" FontSize="14"> <!-- 使用 MultiBinding 替代普通 Binding --> <local:FloatBox.Text> <MultiBinding Mode="TwoWay" UpdateSourceTrigger="LostFocus" Converter="{StaticResource DecimalPrecisionConverter }" ConverterParameter="F1"> <Binding Path="SettingValue" /> <Binding Path="SettingCode" /> </MultiBinding> </local:FloatBox.Text> <TextBox.Background> <MultiBinding Converter="{StaticResource StepBrushConverter}"> <Binding Path="SettingValueStr" /> <Binding Path="Copy.SettingValueStr" /> </MultiBinding> </TextBox.Background> </local:FloatBox> </Border> <!--<Border Grid.Column="2" BorderThickness="1,0,0,1" BorderBrush="{DynamicResource DefaultBorderBrush}" > <Grid> <Border> <Border.Background> <MultiBinding Converter="{StaticResource StepBrushConverter}"> <Binding Path="Status" /> <Binding Path="Copy.Status" /> </MultiBinding> </Border.Background> </Border> <CheckBox IsChecked="{Binding Path=Status}" Content="{Binding Path=Status,Converter={StaticResource BoolenToTextConverter}}" Visibility="{Binding StatusVisible}" Cursor="Hand"></CheckBox> </Grid> </Border>--> <Border Grid.Column="2" BorderThickness="1,0,1,1" BorderBrush="{DynamicResource DefaultBorderBrush}"></Border> </Grid> </Border> <DataTemplate.Triggers> <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ListViewItem}}, Path=IsSelected}" Value="True"> <Setter TargetName="ItemBorder" Property="Background" Value="#DDD"/> </DataTrigger> </DataTemplate.Triggers> </DataTemplate> </UserControl.Resources> <Grid> <Grid> <Grid.RowDefinitions> <RowDefinition Height="30"></RowDefinition> <RowDefinition Height="*"></RowDefinition> <RowDefinition Height="5"></RowDefinition> <RowDefinition Height="30"></RowDefinition> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="auto"></ColumnDefinition> <ColumnDefinition Width="*"></ColumnDefinition> </Grid.ColumnDefinitions> <Grid Grid.Row="0"> <Grid.ColumnDefinitions> <ColumnDefinition Width="300"></ColumnDefinition> <ColumnDefinition Width="100"></ColumnDefinition> <!--屏蔽设置--> <!--<ColumnDefinition Width="100"></ColumnDefinition>--> </Grid.ColumnDefinitions> <Border Grid.Column="0" BorderThickness="1,1,0,1" BorderBrush="{DynamicResource DefaultBorderBrush}" Background="Transparent" > <TextBlock Text="参数名" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="2" FontSize="12" Foreground="{DynamicResource FontBrush1}" ></TextBlock> </Border> <Border Grid.Column="1" BorderThickness="1,1,1,1" BorderBrush="{DynamicResource DefaultBorderBrush}" Background="Transparent" > <TextBlock Text="参数" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="2" FontSize="12" Foreground="{DynamicResource FontBrush1}" ></TextBlock> </Border> <!--屏蔽设置--> <!--<Border Grid.Column="2" BorderThickness="1" BorderBrush="{DynamicResource DefaultBorderBrush}" Background="Transparent" > <TextBlock Text="设置" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="2" FontSize="12" Foreground="{DynamicResource FontBrush1}" ></TextBlock> </Border>--> </Grid> <ListView x:Name="FieldMappingView" tool:TouchScrolling.IsEnabled="True" Grid.Row="1" ItemTemplate="{DynamicResource PortFieldMapping}" ItemsSource="{Binding COTSets}" Template="{DynamicResource ListViewItemMapping}" ItemContainerStyle="{DynamicResource ListViewItemContainerStyle}" BorderThickness="0" SelectedValue="{Binding SelectedSetting}" SelectionMode="Single" Foreground="{DynamicResource FontBrush4}"> <ItemsControl.ItemsPanel> <ItemsPanelTemplate> <StackPanel></StackPanel> </ItemsPanelTemplate> </ItemsControl.ItemsPanel> <i:Interaction.Triggers> <i:EventTrigger EventName="SelectionChanged"> <tool:ExecuteCommandAction CommandParameter="{Binding SelectedItems, ElementName=FieldMappingView}"/> </i:EventTrigger> </i:Interaction.Triggers> </ListView> <Grid Grid.Row="0" Grid.ColumnSpan="2"> <Grid.ColumnDefinitions> <ColumnDefinition Width="*"></ColumnDefinition> <ColumnDefinition Width="3"></ColumnDefinition> <ColumnDefinition Width="80"></ColumnDefinition> <ColumnDefinition Width="3"></ColumnDefinition> <ColumnDefinition Width="80"></ColumnDefinition> <ColumnDefinition Width="3"></ColumnDefinition> <ColumnDefinition Width="80"></ColumnDefinition> <ColumnDefinition Width="3"></ColumnDefinition> <ColumnDefinition Width="80"></ColumnDefinition> <ColumnDefinition Width="3"></ColumnDefinition> <ColumnDefinition Width="10"></ColumnDefinition> </Grid.ColumnDefinitions> <Button Grid.Column="8" Margin="2" FontSize="15" Style="{DynamicResource CommonIconButton}" Command="{Binding ConfirmCommand}" Content="保存"></Button> </Grid> <Grid Grid.Row="4" Grid.ColumnSpan="2"> <Grid.ColumnDefinitions> <ColumnDefinition Width="*"></ColumnDefinition> <ColumnDefinition Width="500"></ColumnDefinition> </Grid.ColumnDefinitions> <ContentControl Grid.Column="1" Content="{Binding PagerControlViewer.View}"></ContentControl> </Grid> </Grid> </Grid> </UserControl> 这个页面有个问题,偶尔的点某一行第一次无法选中,这是为什么
最新发布
12-10
<UserControl x:Class="Gumming.DispenseView" 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" mc:Ignorable="d" xmlns:local="clr-namespace:Gumming" xmlns:tool="clr-namespace:GummingCommon;assembly=GummingCommon" xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity" d:DesignHeight="700" d:DesignWidth="1000" Background="Transparent" x:Name="rootControl"> <UserControl.Resources> <tool:RadioButtonConverter x:Key="RadioConverter"/> <tool:BooleanToOpacityConverter x:Key="OpacityConverter"/> <tool:EditorTextConverter x:Key="TextBrushConverter"/> <tool:EditorBorderConverter x:Key="BorderBrushConverter"/> <tool:PathTypeToThemeConverter x:Key="PathTypeConverter"/> <tool:StepStyleConverter x:Key="StepStyleConverter"/> <tool:StepTextConverter x:Key="StepBrushConverter"/> <DataTemplate x:Key="PortFieldMapping"> <Border Name="ItemBorder" Height="30" BorderThickness="0" BorderBrush="Black"> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="120"></ColumnDefinition> <ColumnDefinition Width="100"></ColumnDefinition> <ColumnDefinition Width="100"></ColumnDefinition> <ColumnDefinition Width="100"></ColumnDefinition> <ColumnDefinition Width="120"></ColumnDefinition> <ColumnDefinition Width="200"></ColumnDefinition> </Grid.ColumnDefinitions> <Border BorderThickness="1,0,0,1" BorderBrush="{DynamicResource BaseBrushBorder}" > <TextBlock Text="{Binding StepName}" HorizontalAlignment="Left" VerticalAlignment="Center" Margin="2" FontSize="12" Foreground="{DynamicResource FontBrush1}" ></TextBlock> </Border> <Border Grid.Column="1" BorderThickness="1,0,0,1" BorderBrush="{DynamicResource BaseBrushBorder}"> <Grid> <Border> <Border.Background> <MultiBinding Converter="{StaticResource StepBrushConverter}"> <Binding Path="SelecedMode.Tag" /> <Binding Path="Copy.Mode" /> </MultiBinding> </Border.Background> </Border> <ComboBox BorderThickness="0" ItemsSource="{Binding Path=Modes}" SelectedItem="{Binding SelecedMode, Mode=TwoWay}"> <ComboBox.ItemTemplate> <DataTemplate> <TextBlock Text="{Binding ComboCode, Mode=TwoWay}" /> </DataTemplate> </ComboBox.ItemTemplate> </ComboBox> </Grid> </Border> <Border Grid.Column="2" BorderThickness="1,0,0,1" BorderBrush="{DynamicResource BaseBrushBorder}"> <local:FloatBox MaxValue="10000" Style="{DynamicResource ListViewTextBoxStyle}" Text="{Binding IntervalTime, Mode=TwoWay,UpdateSourceTrigger=LostFocus,StringFormat=F1}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" VerticalContentAlignment="Center" FontSize="14" > <TextBox.Background> <MultiBinding Converter="{StaticResource StepBrushConverter}"> <Binding Path="IntervalTime" /> <Binding Path="Copy.IntervalTime" /> </MultiBinding> </TextBox.Background> </local:FloatBox> </Border> <Border Grid.Column="3" BorderThickness="1,0,0,1" BorderBrush="{DynamicResource BaseBrushBorder}"> <local:IntBox MaxValue="1000" Style="{DynamicResource ListViewTextBoxStyle}" Text="{Binding DispenseCount, Mode=TwoWay,UpdateSourceTrigger=LostFocus,StringFormat=F0}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" VerticalContentAlignment="Center" FontSize="14" > <TextBox.Background> <MultiBinding Converter="{StaticResource StepBrushConverter}"> <Binding Path="DispenseCount" /> <Binding Path="Copy.DispenseCount" /> </MultiBinding> </TextBox.Background> </local:IntBox> </Border> <Border Grid.Column="4" BorderThickness="1,0,0,1" BorderBrush="{DynamicResource BaseBrushBorder}"> <local:FloatBox MaxValue="1000" Style="{DynamicResource ListViewTextBoxStyle}" Text="{Binding DispenseInterval, Mode=TwoWay,UpdateSourceTrigger=LostFocus,StringFormat=F1}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" VerticalContentAlignment="Center" FontSize="14" > <TextBox.Background> <MultiBinding Converter="{StaticResource StepBrushConverter}"> <Binding Path="DispenseInterval" /> <Binding Path="Copy.DispenseInterval" /> </MultiBinding> </TextBox.Background> </local:FloatBox> </Border> <Border Grid.Column="5" BorderThickness="1,0,1,1" BorderBrush="{DynamicResource BaseBrushBorder}"> <local:FloatBox MaxValue="1000" Style="{DynamicResource ListViewTextBoxStyle}" Text="{Binding DispenseInterval, Mode=TwoWay,UpdateSourceTrigger=LostFocus,StringFormat=F1}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" VerticalContentAlignment="Center" FontSize="14" > <TextBox.Background> <MultiBinding Converter="{StaticResource StepBrushConverter}"> <Binding Path="DispenseInterval" /> <Binding Path="Copy.DispenseInterval" /> </MultiBinding> </TextBox.Background> </local:FloatBox> </Border> <!--<Border Grid.Column="5" BorderThickness="1,0,1,1" BorderBrush="{DynamicResource BaseBrushBorder}"> <local:FloatBox MaxValue="18000" Style="{DynamicResource ListViewTextBoxStyle}" Text="{Binding DispenseTime, Mode=TwoWay,UpdateSourceTrigger=LostFocus,StringFormat=F1}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" VerticalContentAlignment="Center" FontSize="14" > <TextBox.Background> <MultiBinding Converter="{StaticResource StepBrushConverter}"> <Binding Path="DispenseTime" /> <Binding Path="Copy.DispenseTime" /> </MultiBinding> </TextBox.Background> </local:FloatBox> </Border>--> </Grid> </Border> <DataTemplate.Triggers> <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ListViewItem}}, Path=IsSelected}" Value="True"> <Setter TargetName="ItemBorder" Property="Background" Value="#DDD"/> </DataTrigger> </DataTemplate.Triggers> </DataTemplate> </UserControl.Resources> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="160"></ColumnDefinition> <ColumnDefinition Width="10"></ColumnDefinition> <ColumnDefinition Width="*"></ColumnDefinition> </Grid.ColumnDefinitions> <ListBox Grid.Column="0" tool:TouchScrolling.IsEnabled="True" ScrollViewer.HorizontalScrollBarVisibility="Disabled" PreviewKeyDown="listBox_PreviewKeyDown" x:Name="LstFormula" Background="Transparent" BorderBrush="{DynamicResource DefaultBorderBrush}" BorderThickness="1" ItemsSource="{Binding StationCodes}" SelectedItem="{Binding SelectedStationCode, Mode=TwoWay}" ItemContainerStyle="{DynamicResource PatternListBoxItem}" Height="500" VerticalAlignment="Top"> <ListBox.ItemTemplate> <DataTemplate> <TextBlock TextAlignment="Left" VerticalAlignment="Center" Text="{Binding ComboName}" TextTrimming="CharacterEllipsis"> <TextBlock.ToolTip> <TextBlock Text="{Binding ComboName}"></TextBlock> </TextBlock.ToolTip> </TextBlock> </DataTemplate> </ListBox.ItemTemplate> <i:Interaction.Triggers> <i:EventTrigger EventName="SelectionChanged"> <tool:ExecuteCommandAction Command="{Binding SelectFlowCommand}" CommandParameter="{Binding SelectedItem,ElementName=LstFormula}"/> </i:EventTrigger> </i:Interaction.Triggers> </ListBox> <Grid Grid.Column="2"> <Grid.RowDefinitions> <RowDefinition Height="0"></RowDefinition> <RowDefinition Height="30"></RowDefinition> <RowDefinition Height="*"></RowDefinition> <RowDefinition Height="5"></RowDefinition> <RowDefinition Height="30"></RowDefinition> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="auto"></ColumnDefinition> <ColumnDefinition Width="*"></ColumnDefinition> </Grid.ColumnDefinitions> <Grid Grid.Row="1" Grid.Column="0" > <Grid.ColumnDefinitions> <ColumnDefinition Width="120"></ColumnDefinition> <ColumnDefinition Width="100"></ColumnDefinition> <ColumnDefinition Width="100"></ColumnDefinition> <ColumnDefinition Width="100"></ColumnDefinition> <ColumnDefinition Width="120"></ColumnDefinition> <ColumnDefinition Width="200"></ColumnDefinition> </Grid.ColumnDefinitions> <Border BorderThickness="1,1,0,1" BorderBrush="{DynamicResource BaseBrushBorder}" Background="Transparent" > <TextBlock Text="喷头" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="2" FontSize="12" Foreground="{DynamicResource FontBrush1}" ></TextBlock> </Border> <Border Grid.Column="1" BorderThickness="1,1,0,1" BorderBrush="{DynamicResource BaseBrushBorder}" Background="Transparent" > <TextBlock Text="打胶模式" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="2" FontSize="12" Foreground="{DynamicResource FontBrush1}" ></TextBlock> </Border> <Border Grid.Column="2" BorderThickness="1,1,0,1" BorderBrush="{DynamicResource BaseBrushBorder}" Background="Transparent" > <TextBlock Text="间隔时间[min]" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="2" FontSize="12" Foreground="{DynamicResource FontBrush1}" ></TextBlock> </Border> <Border Grid.Column="3" BorderThickness="1,1,0,1" BorderBrush="{DynamicResource BaseBrushBorder}" Background="Transparent" > <TextBlock Text="打胶次数" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="2" FontSize="12" Foreground="{DynamicResource FontBrush1}" ></TextBlock> </Border> <Border Grid.Column="4" BorderThickness="1,1,0,1" BorderBrush="{DynamicResource BaseBrushBorder}" Background="Transparent" > <TextBlock Text="喷洒间隔时间[s]" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="2" FontSize="12" Foreground="{DynamicResource FontBrush1}" ></TextBlock> </Border> <Border Grid.Column="5" BorderThickness="1,1,1,1" BorderBrush="{DynamicResource BaseBrushBorder}" Background="Transparent" > <TextBlock Text="单次间隔时间[S]" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="2" FontSize="12" Foreground="{DynamicResource FontBrush1}" ></TextBlock> </Border> <!--<Border Grid.Column="5" BorderThickness="1" BorderBrush="{DynamicResource BaseBrushBorder}" Background="Transparent" > <TextBlock Text="喷洒量[P/S]" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="2" FontSize="12" Foreground="{DynamicResource FontBrush1}" ></TextBlock> </Border>--> </Grid> <ListView Grid.Row="2" x:Name="FieldMappingView" tool:TouchScrolling.IsEnabled="True" ItemTemplate="{DynamicResource PortFieldMapping}" ItemsSource="{Binding Dispenses}" Template="{DynamicResource ListViewItemMapping}" ItemContainerStyle="{DynamicResource ListViewItemContainerStyle}" BorderThickness="0" IsHitTestVisible="True" SelectedItem="{Binding SelectedDispense, Mode=TwoWay}" SelectionMode="Extended" Foreground="{DynamicResource FontBrush4}" IsEnabled="{Binding AllowEdit}"> <i:Interaction.Triggers> <i:EventTrigger EventName="SelectionChanged"> <tool:ExecuteCommandAction Command="{Binding SelectStepCommand}" CommandParameter="{Binding SelectedItems, ElementName=FieldMappingView}"/> </i:EventTrigger> </i:Interaction.Triggers> </ListView> <Grid Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2"> <Grid.ColumnDefinitions> <ColumnDefinition Width="80"></ColumnDefinition> <ColumnDefinition Width="3"></ColumnDefinition> <ColumnDefinition Width="80"></ColumnDefinition> <ColumnDefinition Width="3"></ColumnDefinition> <ColumnDefinition Width="80"></ColumnDefinition> <ColumnDefinition Width="3"></ColumnDefinition> <ColumnDefinition Width="80"></ColumnDefinition> <ColumnDefinition Width="*"></ColumnDefinition> </Grid.ColumnDefinitions> <TextBlock Text="流片名称:" HorizontalAlignment="Stretch" VerticalAlignment="Center" FontSize="14"></TextBlock> <TextBox Grid.Column="2" Text="{Binding StationCode}" IsEnabled="{Binding AllowEdit}" HorizontalAlignment="Stretch" VerticalAlignment="Center" FontSize="14"></TextBox> <TextBlock Grid.Column="4" Text="创建人:" HorizontalAlignment="Stretch" VerticalAlignment="Center" FontSize="14"></TextBlock> <TextBox Grid.Column="6" IsEnabled="False" Text="{Binding CreateBy}" HorizontalAlignment="Stretch" VerticalAlignment="Center" FontSize="14"></TextBox> </Grid> <Grid Grid.Row="5" Grid.Column="0" Grid.ColumnSpan="2"> <Grid.ColumnDefinitions> <ColumnDefinition Width="80"></ColumnDefinition> <ColumnDefinition Width="3"></ColumnDefinition> <ColumnDefinition Width="80"></ColumnDefinition> <ColumnDefinition Width="3"></ColumnDefinition> <ColumnDefinition Width="80"></ColumnDefinition> <ColumnDefinition Width="3"></ColumnDefinition> <ColumnDefinition Width="80"></ColumnDefinition> <ColumnDefinition Width="3"></ColumnDefinition> <ColumnDefinition Width="80"></ColumnDefinition> <ColumnDefinition Width="3"></ColumnDefinition> <ColumnDefinition Width="80"></ColumnDefinition> <ColumnDefinition Width="3"></ColumnDefinition> <ColumnDefinition Width="80"></ColumnDefinition> <ColumnDefinition Width="3"></ColumnDefinition> <ColumnDefinition Width="80"></ColumnDefinition> <ColumnDefinition Width="3"></ColumnDefinition> <ColumnDefinition Width="80"></ColumnDefinition> <ColumnDefinition Width="*"></ColumnDefinition> </Grid.ColumnDefinitions> <Button Grid.Column="0" Margin="2" FontSize="15" Style="{DynamicResource CommonIconButton}" Command="{Binding AllowCommand}" Content="编辑"></Button> <Button Grid.Column="2" Margin="2" FontSize="15" IsEnabled="{Binding AllowEdit}" Style="{DynamicResource CommonIconButton}" Command="{Binding DisabledCommand}" Content="取消编辑"></Button> <Button Grid.Column="4" Margin="2" FontSize="15" IsEnabled="{Binding AllowEdit}" Style="{DynamicResource CommonIconButton}" Command="{Binding SaveStepCommand}" Content="保存"></Button> </Grid> </Grid> </Grid> </UserControl> 我想把上面这个页面改成显示下面的这个的样子Dummy Dispense(预打胶) 创建人:______ 创建时间:______ 喷嘴 模式 次数[x1] 间隔时间[min] 单次间隔时间[s] 清洗时间[s] 计片清洗片数 PR1 None/Lot Head/Interval/Both下拉选其一 1 0 0 null且不可输入 null且不可输入 PR2 None/Lot Head/Interval/Both下拉选其一 1 0 0 null且不可输入 null且不可输入 PR3 None/Lot Head/Interval/Both下拉选其一 1 0 0 null且不可输入 null且不可输入 CCR None/Lot Head/Interval/Both下拉选其一 1 0 0 0 1
11-12
<control:BasePage x:Class="TrainDiagramSchedule.CreateTrainDiagramPage" 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:TrainDiagramSchedule" xmlns:control="clr-namespace:CustomControls;assembly=CustomControls" mc:Ignorable="d" Title="CreateTrainDiagramPage" Width="450" Height="675" Loaded="Page_Loaded"> <Grid Background="{StaticResource PageMiddleZoneBackground}"> <Grid.RowDefinitions> <!-- <RowDefinition Height="185"></RowDefinition> --> <!-- <RowDefinition Height="350"></RowDefinition> --> <!-- <RowDefinition Height="95"></RowDefinition> --> <RowDefinition Height="200"></RowDefinition> <RowDefinition Height="335"></RowDefinition> <RowDefinition Height="95"></RowDefinition> </Grid.RowDefinitions> <GroupBox Header="基本信息" FontSize="14" FontWeight="Bold" BorderBrush="{StaticResource BorderBrush}"> <Grid Margin="0,0,5,0"> <Grid.ColumnDefinitions> <ColumnDefinition Width="90"></ColumnDefinition> <ColumnDefinition Width="2*"></ColumnDefinition> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition Height="25"></RowDefinition> <RowDefinition Height="25"></RowDefinition> <RowDefinition Height="25"></RowDefinition> <RowDefinition Height="25"></RowDefinition> <RowDefinition Height="25"></RowDefinition> <RowDefinition Height="25"></RowDefinition> <RowDefinition Height="25"></RowDefinition> <RowDefinition Height="5"></RowDefinition> </Grid.RowDefinitions> <TextBlock FontSize="14" Grid.Row="0" Grid.Column="0" Text="运行图名称:" FontWeight="Normal" HorizontalAlignment="Right" Margin="2"> </TextBlock> <TextBox x:Name="TbxDiagramName" FontSize="14" Grid.Row="0" Grid.Column="1" BorderThickness=".5" BorderBrush="{StaticResource BorderBrush}" Margin="2" HorizontalContentAlignment="Left" VerticalContentAlignment="Center" FontWeight="Normal"> </TextBox> <TextBlock FontSize="14" Grid.Row="1" Grid.Column="0" Text="运行图类型:" HorizontalAlignment="Right" Margin="2" FontWeight="Normal"> </TextBlock> <ComboBox Name="CbxDiagramType" Foreground="Black" Grid.Row="1" Grid.Column="1" Margin="2,0,2,0" VerticalAlignment="Center" FontSize="14" FontWeight="Normal" SelectionChanged="CbxDiagramTypeSelectionChanged"> </ComboBox> <TextBlock FontSize="14" Grid.Row="2" Grid.Column="0" Text="运行图描述:" HorizontalAlignment="Right" Margin="2" FontWeight="Normal"> </TextBlock> <TextBox x:Name="TbxDiagramDescribe" FontSize="14" Grid.Row="2" Grid.Column="1" Grid.RowSpan="2" BorderThickness=".5" BorderBrush="{StaticResource BorderBrush}" Margin="2" HorizontalContentAlignment="Left" VerticalContentAlignment="Top" TextWrapping="Wrap" FontWeight="Normal"> </TextBox> <TextBlock FontSize="14" Grid.Row="4" Grid.Column="0" Text="编制人员:" HorizontalAlignment="Right" Margin="2" FontWeight="Normal"> </TextBlock> <TextBox x:Name="TbxCreateUser" FontSize="14" Grid.Row="4" Grid.Column="1" BorderThickness=".5" BorderBrush="{StaticResource BorderBrush}" Margin="2" IsReadOnly="True" HorizontalContentAlignment="Left" VerticalContentAlignment="Center" FontWeight="Normal"> </TextBox> <TextBlock FontSize="14" Grid.Row="5" Grid.Column="0" Text="编制时间:" HorizontalAlignment="Right" Margin="2" FontWeight="Normal"> </TextBlock> <TextBox x:Name="TbxCreateTime" FontSize="14" Grid.Row="5" Grid.Column="1" BorderThickness=".5" BorderBrush="{StaticResource BorderBrush}" Margin="2" IsReadOnly="True" HorizontalContentAlignment="Left" VerticalContentAlignment="Center" FontWeight="Normal"> </TextBox> <TextBlock FontSize="14" Grid.Row="6" Grid.Column="0" Text="使用类型:" HorizontalAlignment="Right" Margin="2" FontWeight="Normal"> </TextBlock> <ComboBox Name="CbxOperationType" Foreground="Black" Grid.Row="6" Grid.Column="1" Margin="2,0,2,0" VerticalAlignment="Center" FontSize="14" FontWeight="Normal" SelectionChanged="CbxOperationTypeSelectionChanged"> </ComboBox> </Grid> </GroupBox> <GroupBox Header="编制线路" Grid.Row="1" Margin="0,10,0,0" FontSize="14" FontWeight="Bold" BorderBrush="{StaticResource BorderBrush}"> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="*"></ColumnDefinition> <ColumnDefinition Width="20"></ColumnDefinition> <ColumnDefinition Width="*"></ColumnDefinition> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition Height="*"></RowDefinition> <RowDefinition Height="Auto"></RowDefinition> </Grid.RowDefinitions> <Border Margin="15,0,15,5" BorderThickness=".5" BorderBrush="{StaticResource BorderBrush}" CornerRadius="3"> <Grid> <Grid.RowDefinitions> <RowDefinition Height="25"></RowDefinition> <RowDefinition Height="*"></RowDefinition> </Grid.RowDefinitions> <TextBlock Text="线路列表:" FontSize="12" Margin="5,2,2,2" FontWeight="Normal"></TextBlock> <ListView x:Name="LvwLineName" Grid.Row="1" Margin="5,0,5,5" SelectionChanged="LvwLineName_SelectionChanged"> <ListView.ItemContainerStyle> <Style TargetType="ListBoxItem"> <Setter Property="IsSelected" Value="{Binding LineStatus.IsCreateTrainDiagram,Mode=OneWay,UpdateSourceTrigger=PropertyChanged}" /> </Style> </ListView.ItemContainerStyle> <ListView.ItemTemplate> <DataTemplate> <Grid> <CheckBox Name="CbxLineName" Margin="5,0,0,0" Content="{Binding LineName}" FontSize="14" HorizontalAlignment="Left" VerticalAlignment="Center" IsChecked="{Binding LineStatus.IsCreateTrainDiagram,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" FontWeight="Normal" Checked="CbxLineName_Checked"> </CheckBox> </Grid> </DataTemplate> </ListView.ItemTemplate> </ListView> </Grid> </Border> <Border Margin="15,0,15,5" BorderThickness=".5" BorderBrush="{StaticResource BorderBrush}" CornerRadius="3" Grid.Column="2"> <Grid> <Grid.RowDefinitions> <RowDefinition Height="25"></RowDefinition> <RowDefinition Height="*"></RowDefinition> </Grid.RowDefinitions> <TextBlock Text="生成线路:" FontSize="12" Margin="5,2,2,2" FontWeight="Normal"></TextBlock> <ListBox Name="LbxSelectedLineName" Grid.Row="1" Margin="5,0,5,5" ItemsSource="{Binding SelectedItems,ElementName=LvwLineName}"> <ListBox.ItemTemplate> <DataTemplate> <Grid> <TextBlock Margin="20,0,0,0" Text="{Binding LineName}" FontWeight="Normal" FontSize="13" HorizontalAlignment="Center" VerticalAlignment="Center"> </TextBlock> </Grid> </DataTemplate> </ListBox.ItemTemplate> </ListBox> </Grid> </Border> <TextBlock Text="》》" Grid.Column="0" Grid.ColumnSpan="3" Margin="10,0,0,0" FontSize="20" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="Normal"> </TextBlock> <StackPanel Grid.Column="0" Grid.ColumnSpan="3" HorizontalAlignment="Center" VerticalAlignment="Bottom"> <Button Height="16" Width="45" Content="全选" FontSize="10" Margin="0,0,0,5" Background="{StaticResource PageTopZoneBackground}" BorderThickness=".5" Name="BtnSelectAllLine" FontWeight="Normal" Click="BtnSelectAllLine_Click"> </Button> <Button Height="16" Width="45" Content="取消全选" FontSize="10" Margin="0,0,0,5" Background="{StaticResource PageTopZoneBackground}" BorderThickness=".5" Name="BtnCancelSelectAllLine" FontWeight="Normal" Click="BtnCancelSelectAllLine_Click"> </Button> </StackPanel> <CheckBox Grid.Row="1" Grid.Column="2" IsChecked="False" Content="需生成跨线运行图" HorizontalAlignment="Right" Margin="15,0,15,5" Name="CbxConnectTrainDiagram" Click="CbxConnectTrainDiagram_Click" FontWeight="Normal" Visibility="Collapsed"> </CheckBox> </Grid> </GroupBox> <GroupBox Header="新建模式" Grid.Row="2" Margin="0,10,0,0" FontSize="14" FontWeight="Bold" BorderBrush="{StaticResource BorderBrush}"> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="*"></ColumnDefinition> <ColumnDefinition Width="*"></ColumnDefinition> <ColumnDefinition Width="*"></ColumnDefinition> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition Height="25"></RowDefinition> <RowDefinition Height="30"></RowDefinition> </Grid.RowDefinitions> <RadioButton Name="RbtnLoadOperatePlan" FontSize="14" Content="加载运输方案" Margin="15,2,0,2" GroupName="是否加载方案" FontWeight="Normal" HorizontalAlignment="Left" VerticalAlignment="Center" Checked="RbtnCreateType_Checked"> </RadioButton> <RadioButton IsChecked="True" FontSize="14" Grid.Column="2" Content="不加载运输方案" GroupName="是否加载方案" FontWeight="Normal" HorizontalAlignment="Center" VerticalAlignment="Center" Checked="RbtnCreateType_Checked" Visibility="Visible" Name="RbtnUnLoadOperatePlan"> </RadioButton> <RadioButton FontSize="14" Grid.Column="2" Content="外部导入" Margin="10,2,15,2" GroupName="是否加载方案" FontWeight="Normal" HorizontalAlignment="Right" VerticalAlignment="Center" Checked="RbtnCreateType_Checked" Visibility="Visible" Name="RbtnImportExternalFile"> </RadioButton> <TextBlock FontSize="14" Grid.Row="1" Grid.Column="0" Text="选择方案:" HorizontalAlignment="Left" Margin="15,5,2,2" VerticalAlignment="Center" FontWeight="Normal"> </TextBlock> <ComboBox Name="CbxOperatePlan" IsEnabled="{Binding IsChecked,ElementName=RbtnLoadOperatePlan}" FontSize="14" Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="3" Margin="95,5,15,5" HorizontalContentAlignment="Left" VerticalContentAlignment="Center" FontWeight="Normal" SelectionChanged="CbxOperatePlan_SelectionChanged"> </ComboBox> </Grid> </GroupBox> </Grid> </control:BasePage>; using CustomControls; using DataDefine; using MathNet.Numerics; using System; using System.Collections.Generic; using System.Linq; using System.Windows; using System.Windows.Controls; using TrainDiagramAlgorithm; using TrainDiagramGenerate; namespace TrainDiagramSchedule { /// <summary> /// CreateTrainDiagramPage.xaml 的交互逻辑 /// </summary> public partial class CreateTrainDiagramPage : BasePage { public bool IsCreateConnectTrainDiagram; public bool IsLoadOperatePlan; public bool IsLoadExternalFile; public string CurrentOperatePlan; TrafficNetwork? CurrentNetwork; public TrainDiagramAlgorithm.TrainDiagramGenerate? DiagramGenerate = null; public int AlgorithmType = 1;//0-dqh算法,1-lc算法 public CreateTrainDiagramPage(CustomFunctionWindow window, TrafficNetwork? network) { CurrentWindow = window; CurrentNetwork = network; CurrentOperatePlan = string.Empty; InitializeComponent(); window.Closing += Window_Closing; } private void Window_Closing(object? sender, System.ComponentModel.CancelEventArgs e) { if (CurrentNetwork == null) return; if (CurrentWindow?.DialogResult == true) { bool isClose = false; for (int i = 0; i < CurrentNetwork.LineList.Count; i++) { TrafficLine line = CurrentNetwork.LineList[i]; if (line.LineStatus.IsCreateTrainDiagram) { isClose = true; } } if (!isClose) { new CustomMessageWindow("请选择线路", 0, 1).Show(); e.Cancel = true; } } } private void Page_Loaded(object sender, RoutedEventArgs e) { if (CurrentNetwork == null) return; if (CurrentNetwork.CityName == "重庆" || CurrentNetwork.CityName == "南宁" || CurrentNetwork.CityName == "深圳") { RbtnUnLoadOperatePlan.SetValue(Grid.ColumnProperty, 1); RbtnImportExternalFile.Visibility = Visibility.Visible; } LvwLineName.ItemsSource = null; LvwLineName.ItemsSource = CurrentNetwork.LineList; TbxDiagramName.Text = "线网图" + DateTime.Now.ToString("yyyyMMddHHmmss"); TbxCreateUser.Text = "测试用户"; TbxCreateTime.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); Type enumType = typeof(DiagramPeriodTypeEnum); Array periodTypeList = Enum.GetValues(enumType); CbxDiagramType.ItemsSource = periodTypeList; CbxDiagramType.SelectedIndex = 0; //使用类型 CbxOperationType.ItemsSource = Enum.GetValues(typeof(OperationTypeEnum2)); CbxOperationType.SelectedIndex = 0; if (CurrentNetwork.LineList.Count == 1) { CurrentNetwork.LineList[0].LineStatus.IsCreateTrainDiagram = true; } else { //清除之前的选中状态 List<TrafficLine> trafficLines = CurrentNetwork.LineList.Where(x => x.LineStatus.IsCreateTrainDiagram).ToList(); if (trafficLines.Count > 0) { foreach (TrafficLine item in trafficLines) { item.LineStatus.IsCreateTrainDiagram = false; } } } } private void BtnSelectAllLine_Click(object sender, RoutedEventArgs e) { if (CurrentNetwork == null) return; for (int i = 0; i < CurrentNetwork.LineList.Count; i++) { TrafficLine line = CurrentNetwork.LineList[i]; line.LineStatus.IsCreateTrainDiagram = true; } LvwLineName.Items.Refresh(); } private void BtnCancelSelectAllLine_Click(object sender, RoutedEventArgs e) { if (CurrentNetwork == null) return; for (int i = 0; i < CurrentNetwork.LineList.Count; i++) { TrafficLine line = CurrentNetwork.LineList[i]; line.LineStatus.IsCreateTrainDiagram = false; } LvwLineName.SelectedItems.Clear(); LvwLineName.Items.Refresh(); } private void LvwLineName_SelectionChanged(object sender, SelectionChangedEventArgs e) { TrafficLine line = (TrafficLine)LvwLineName.SelectedItem; if (line == null) return; if (!line.LineStatus.IsCreateTrainDiagram) { LvwLineName.SelectedIndex = -1; } LvwLineName.Items.Refresh(); } private void CbxConnectTrainDiagram_Click(object sender, RoutedEventArgs e) { CheckBox checkBox = (CheckBox)sender; if (checkBox.IsChecked == true) { IsCreateConnectTrainDiagram = true; } else { IsCreateConnectTrainDiagram = false; } } private void CbxLineName_Checked(object sender, RoutedEventArgs e) { LoadOperatePlan(); } private void CbxOperatePlan_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (CbxOperatePlan.SelectedItem != null) { CurrentOperatePlan = CbxOperatePlan.SelectedItem.ToString() ?? string.Empty; } } private void CbxDiagramTypeSelectionChanged(object sender, SelectionChangedEventArgs e) { LoadOperatePlan(); } private void CbxOperationTypeSelectionChanged(object sender, SelectionChangedEventArgs e) { int CbxOperationTypeSelectedIndex = CbxOperationType.SelectedIndex; if (CbxOperationTypeSelectedIndex < 0) return; } private void RbtnCreateType_Checked(object sender, RoutedEventArgs e) { RadioButton radioButton = (RadioButton)sender; string buttonName = radioButton.Name; if (radioButton.Content?.ToString() == "加载运输方案") { IsLoadOperatePlan = true; IsLoadExternalFile = false; if (AlgorithmType == 0) { if (DiagramGenerate == null) { DiagramGenerate = new TrainDiagramAlgorithm.TrainDiagramGenerate(); DiagramGenerate.LoadNetworkDataFromPgsql(); DiagramGenerate.LoadAbleNetSchemeNameFromPgsql(); } } LoadOperatePlan(); } else if (radioButton.Content?.ToString() == "不加载运输方案") { IsLoadOperatePlan = false; IsLoadExternalFile = false; CbxOperatePlan.ItemsSource = null; } else if (radioButton.Content?.ToString() == "外部导入") { IsLoadOperatePlan = false; IsLoadExternalFile = true; CbxOperatePlan.ItemsSource = null; } } private void LoadOperatePlan() { if (AlgorithmType == 0) { LoadOperatePlan1(); } else if (AlgorithmType == 1) { LoadOperatePlan2(); } } private void LoadOperatePlan1() { if (CurrentNetwork == null) return; int CbxDiagramTypeSelectedIndex = CbxDiagramType.SelectedIndex; if (CbxDiagramTypeSelectedIndex < 0) { MessageShowWindowHelper.ShowCustomMessageBox("请选择运行图类型!", 0); return; } //Step01:先确定生成线路的显示内容 if (DiagramGenerate != null) { DiagramGenerate.TrainDiagram.GenerateLineList.Clear(); } string GenerateLineName = string.Empty; for (int i = 0; i < CurrentNetwork.LineList.Count; i++) { TrafficLine line = CurrentNetwork.LineList[i]; if (!line.LineStatus.IsCreateTrainDiagram) continue; if (!string.IsNullOrEmpty(GenerateLineName)) { GenerateLineName += "、"; } GenerateLineName += line.LineName; if (DiagramGenerate != null) { DiagramGenerate.TrainDiagram.GenerateLineList.Add(DiagramGenerate.GetLineByName(line.LineName)); } } int? count = DiagramGenerate?.AbleSchemeList.Count; //清空下拉框 CbxOperatePlan.Items.Clear(); for (int i = 0; i < count; i++) { NetScheme ThisNetScheme = DiagramGenerate.AbleSchemeList[i]; bool IsNetSchemeSatisfy = true; //s.t.01:总数量对应 if (DiagramGenerate.TrainDiagram.GenerateLineList.Count != ThisNetScheme.GenerateLineList.Count) { IsNetSchemeSatisfy = false; } //s.t.02:运行图生成线路每一条都需要被包含在方案生成线路内 for (int j = 0; j < DiagramGenerate.TrainDiagram.GenerateLineList.Count; j++) { BasicLine ThisGenerateLine = DiagramGenerate.TrainDiagram.GenerateLineList[j]; if (!ThisNetScheme.GenerateLineList.Contains(ThisGenerateLine)) { IsNetSchemeSatisfy = false; break; } } if (IsNetSchemeSatisfy) { //Add CbxOperatePlan.Items.Add(DiagramGenerate.AbleSchemeList[i].SchemeName); } //Show if (DiagramGenerate.NetScheme != null && DiagramGenerate.NetScheme.SchemeName == DiagramGenerate.AbleSchemeList[i].SchemeName) { CbxOperatePlan.SelectedIndex = CbxOperatePlan.Items.Count - 1; } } } private void LoadOperatePlan2() { TrainDiagramGenerate.Generate.InitNetwork(); List<string> lineNameList = new List<string>(); for (int i = 0; i < CurrentNetwork.LineList.Count; i++) { if (CurrentNetwork.LineList[i].LineStatus.IsCreateTrainDiagram) { lineNameList.Add(CurrentNetwork.LineList[i].LineName); } } //清空下拉框 List<string> CapRsceAllocProList = DataHandler.GetNetworkCapRsceAllocProList(lineNameList); CbxOperatePlan.ItemsSource = null; CbxOperatePlan.ItemsSource = CapRsceAllocProList; } } }; 如果 线路列表 被选择了多个(大于1), 则 <RadioButton FontSize="14" Grid.Column="2" Content="外部导入" Margin="10,2,15,2" GroupName="是否加载方案" FontWeight="Normal" HorizontalAlignment="Right" VerticalAlignment="Center" Checked="RbtnCreateType_Checked" Visibility="Visible" Name="RbtnImportExternalFile"> </RadioButton>; 外部导入 按钮被置灰,无法选择, 当 线路列表 只选择了一个 , 外部导入 按钮 可以被选择
06-05
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值