feat:弹出窗口

master
sunhonglei 7 months ago
parent 495acf9792
commit d3c0676a2d
  1. 56
      ViewModel/Grading/GradingResultVM.cs
  2. 201
      Views/Grading/GradingResult.xaml
  3. 54
      Views/Grading/GradingResult.xaml.cs

@ -75,7 +75,7 @@ public class GradingResultVM : BaseViewModel
}
InitCombobox();
DS = "NA";
// AutoSave();
AutoSave();
}
#region 画面初始化相关操作
@ -900,12 +900,14 @@ public class GradingResultVM : BaseViewModel
dictionary.Add("TWIST", "扭曲度");
dictionary.Add("CULET_TO_TABLE", "底尖到台面偏心比");
dictionary.Add("round", "圆形");
return dictionary[id];
dictionary.Add("", "");
return dictionary[id??""];
}
private string GetGradeName(int order)
{
// TODO DB没关联
Dictionary<int, string> dictionary = new();
dictionary.Add(0, "");
dictionary.Add(1,"极好");
dictionary.Add(2, "很好");
dictionary.Add(3, "好");
@ -954,7 +956,32 @@ public class GradingResultVM : BaseViewModel
SymLevelTotal = string.Empty;
}
}
public RowDetail getSelectData(string testItemId)
{
RowDetail row = new RowDetail();
row.itemName = GetName(testItemId);
var data = DtResults.Where(x => x.TestItemId == testItemId).FirstOrDefault();
row.Avg = data != null ? data.Avg : "";
row.Dev = data != null ? data.Dev : "";
row.Max = data != null ? data.Max : "";
row.Min = data != null ? data.Min : "";
row.item1 = "1";
row.item2 = "2";
row.item3 = "3";
row.item4 = "4";
row.item5 = "5";
row.item6 = "6";
row.item7 = "7";
row.item8 = "8";
row.MaxIndex = 0;
row.MinIndex = 7;
row.CutLevel = data != null ? data.CutLevel : "";
row.SymLevel = GetGradeName(data != null ? data.SymLevel??0 : 0);
return row;
}
#region 钻石操作相关
//暂略
//部分代码(直接操作控件)需要在xaml.cs里边写
@ -1015,4 +1042,25 @@ public class DataInfo
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
}
public class RowDetail
{
public string? itemName { get; set; }
public string? Avg { get; set; }
public string? Dev { get; set; }
public string? Min { get; set; }
public string? Max { get; set; }
public string? item1 { get; set; }
public string? item2 { get; set; }
public string? item3 { get; set; }
public string? item4 { get; set; }
public string? item5 { get; set; }
public string? item6 { get; set; }
public string? item7 { get; set; }
public string? item8 { get; set; }
public string? CutLevel { get; set; }
public string? SymLevel { get; set; }
public int? MaxIndex { get; set; }
public int? MinIndex { get; set; }
}

@ -104,7 +104,8 @@
</Border>
<Border Grid.Row="1" Grid.Column="0">
<DataGrid HeadersVisibility="Column" AutoGenerateColumns="False" ItemsSource="{Binding DtResults,Mode=TwoWay}" CanUserResizeColumns="False" CanUserResizeRows="False">
<DataGrid HeadersVisibility="Column" AutoGenerateColumns="False" ItemsSource="{Binding DtResults,Mode=TwoWay}" CanUserResizeColumns="False" CanUserResizeRows="False"
MouseLeftButtonUp="dataGrid_MouseLeftButtonUp">
<DataGrid.ColumnHeaderStyle>
<Style TargetType="DataGridColumnHeader">
<Setter Property="MinWidth" Value="120"/>
@ -155,9 +156,207 @@
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Header="TestItemId" Binding="{Binding TestItemId}" Visibility="Hidden"/>
</DataGrid.Columns>
</DataGrid>
</Border>
<Popup x:Name="detailPopup" IsOpen="False" Placement="Absolute" Width="1200">
<Grid Background="#ededed">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="117*"/>
<ColumnDefinition Width="3*"/>
</Grid.ColumnDefinitions>
<DataGrid x:Name="RowDetail" CanUserResizeColumns="False" CanUserResizeRows="False">
<DataGrid.ColumnHeaderStyle>
<Style TargetType="DataGridColumnHeader">
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="Background" Value="Transparent"/>
</Style>
</DataGrid.ColumnHeaderStyle>
<DataGrid.Resources>
<Style x:Key="CenteredTextBlockStyle" TargetType="TextBlock">
<Setter Property="TextAlignment" Value="Center"/>
<Setter Property="HorizontalAlignment" Value="Center"/>
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="FontWeight" Value="Normal" />
</Style>
<Style x:Key="OtherCellkStyle" TargetType="DataGridCell">
<Setter Property="Background" Value="#bbbbbb"/>
<Setter Property="BorderBrush" Value="#ededed"/>
</Style>
</DataGrid.Resources>
<DataGrid.Columns>
<DataGridTextColumn Width="2*" Header="" Binding="{Binding itemName}" ElementStyle="{StaticResource CenteredTextBlockStyle}">
<DataGridTextColumn.CellStyle >
<Style TargetType="DataGridCell">
<Setter Property="Background" Value="#ededed"/>
<Setter Property="BorderBrush" Value="#ededed"/>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
<DataGridTextColumn Width="*" Header="{DynamicResource resAvg}" Binding="{Binding Avg}" ElementStyle="{StaticResource CenteredTextBlockStyle}" CellStyle="{StaticResource OtherCellkStyle}"/>
<DataGridTextColumn Width="*" Header="{DynamicResource resDev}" Binding="{Binding Dev}" ElementStyle="{StaticResource CenteredTextBlockStyle}" CellStyle="{StaticResource OtherCellkStyle}"/>
<DataGridTextColumn Width="*" Header="{DynamicResource resMin}" Binding="{Binding Min}" ElementStyle="{StaticResource CenteredTextBlockStyle}"/>
<DataGridTextColumn Width="*" Header="{DynamicResource resMax}" Binding="{Binding Max}" ElementStyle="{StaticResource CenteredTextBlockStyle}"/>
<DataGridTextColumn Width="*" Header="1" Binding="{Binding item1}">
<DataGridTextColumn.ElementStyle>
<Style TargetType="TextBlock">
<Setter Property="TextAlignment" Value="Center"/>
<Setter Property="HorizontalAlignment" Value="Center"/>
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="FontWeight" Value="Normal" />
<Style.Triggers>
<DataTrigger Binding="{Binding MaxIndex}" Value="0">
<Setter Property="FontWeight" Value="Bold" />
</DataTrigger>
<DataTrigger Binding="{Binding MinIndex}" Value="0">
<Setter Property="FontWeight" Value="Bold" />
</DataTrigger>
</Style.Triggers>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Width="*" Header="2" Binding="{Binding item2}" >
<DataGridTextColumn.ElementStyle>
<Style TargetType="TextBlock">
<Setter Property="TextAlignment" Value="Center"/>
<Setter Property="HorizontalAlignment" Value="Center"/>
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="FontWeight" Value="Normal" />
<Style.Triggers>
<DataTrigger Binding="{Binding MaxIndex}" Value="1">
<Setter Property="FontWeight" Value="Bold" />
</DataTrigger>
<DataTrigger Binding="{Binding MinIndex}" Value="1">
<Setter Property="FontWeight" Value="Bold" />
</DataTrigger>
</Style.Triggers>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Width="*" Header="3" Binding="{Binding item3}" >
<DataGridTextColumn.ElementStyle>
<Style TargetType="TextBlock">
<Setter Property="TextAlignment" Value="Center"/>
<Setter Property="HorizontalAlignment" Value="Center"/>
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="FontWeight" Value="Normal" />
<Style.Triggers>
<DataTrigger Binding="{Binding MaxIndex}" Value="2">
<Setter Property="FontWeight" Value="Bold" />
</DataTrigger>
<DataTrigger Binding="{Binding MinIndex}" Value="2">
<Setter Property="FontWeight" Value="Bold" />
</DataTrigger>
</Style.Triggers>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Width="*" Header="4" Binding="{Binding item4}" >
<DataGridTextColumn.ElementStyle>
<Style TargetType="TextBlock">
<Setter Property="TextAlignment" Value="Center"/>
<Setter Property="HorizontalAlignment" Value="Center"/>
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="FontWeight" Value="Normal" />
<Style.Triggers>
<DataTrigger Binding="{Binding MaxIndex}" Value="3">
<Setter Property="FontWeight" Value="Bold" />
</DataTrigger>
<DataTrigger Binding="{Binding MinIndex}" Value="3">
<Setter Property="FontWeight" Value="Bold" />
</DataTrigger>
</Style.Triggers>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Width="*" Header="5" Binding="{Binding item5}" >
<DataGridTextColumn.ElementStyle>
<Style TargetType="TextBlock">
<Setter Property="TextAlignment" Value="Center"/>
<Setter Property="HorizontalAlignment" Value="Center"/>
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="FontWeight" Value="Normal" />
<Style.Triggers>
<DataTrigger Binding="{Binding MaxIndex}" Value="4">
<Setter Property="FontWeight" Value="Bold" />
</DataTrigger>
<DataTrigger Binding="{Binding MinIndex}" Value="4">
<Setter Property="FontWeight" Value="Bold" />
</DataTrigger>
</Style.Triggers>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Width="*" Header="6" Binding="{Binding item6}" >
<DataGridTextColumn.ElementStyle>
<Style TargetType="TextBlock">
<Setter Property="TextAlignment" Value="Center"/>
<Setter Property="HorizontalAlignment" Value="Center"/>
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="FontWeight" Value="Normal" />
<Style.Triggers>
<DataTrigger Binding="{Binding MaxIndex}" Value="5">
<Setter Property="FontWeight" Value="Bold" />
</DataTrigger>
<DataTrigger Binding="{Binding MinIndex}" Value="5">
<Setter Property="FontWeight" Value="Bold" />
</DataTrigger>
</Style.Triggers>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Width="*" Header="7" Binding="{Binding item7}" >
<DataGridTextColumn.ElementStyle>
<Style TargetType="TextBlock">
<Setter Property="TextAlignment" Value="Center"/>
<Setter Property="HorizontalAlignment" Value="Center"/>
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="FontWeight" Value="Normal" />
<Style.Triggers>
<DataTrigger Binding="{Binding MaxIndex}" Value="6">
<Setter Property="FontWeight" Value="Bold" />
</DataTrigger>
<DataTrigger Binding="{Binding MinIndex}" Value="6">
<Setter Property="FontWeight" Value="Bold" />
</DataTrigger>
</Style.Triggers>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Width="*" Header="8" Binding="{Binding item8}" >
<DataGridTextColumn.ElementStyle>
<Style TargetType="TextBlock">
<Setter Property="TextAlignment" Value="Center"/>
<Setter Property="HorizontalAlignment" Value="Center"/>
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="FontWeight" Value="Normal" />
<Style.Triggers>
<DataTrigger Binding="{Binding MaxIndex}" Value="7">
<Setter Property="FontWeight" Value="Bold" />
</DataTrigger>
<DataTrigger Binding="{Binding MinIndex}" Value="7">
<Setter Property="FontWeight" Value="Bold" />
</DataTrigger>
</Style.Triggers>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Width="*" Header="{DynamicResource CutLevel}" Binding="{Binding CutLevel}" ElementStyle="{StaticResource CenteredTextBlockStyle}" CellStyle="{StaticResource OtherCellkStyle}"/>
<DataGridTextColumn Width="*" Header="{DynamicResource resLevel}" Binding="{Binding SymLevel}" ElementStyle="{StaticResource CenteredTextBlockStyle}" CellStyle="{StaticResource OtherCellkStyle}"/>
</DataGrid.Columns>
</DataGrid>
<Button Grid.Column="1" Click="Window_MouseDown" VerticalAlignment="Top" Background="Transparent">
<Path Data="{StaticResource CloseGeometry}"
Fill="Black"
Stroke="Black"
HorizontalAlignment="Center"
VerticalAlignment="Top"
Margin="0 0 0 0"
Width="10" />
</Button>
</Grid>
</Popup>
<GridSplitter Grid.Row="1" Grid.Column="1" Width="3" HorizontalAlignment="Stretch"></GridSplitter>
<Border Grid.Row="1" Grid.Column="2" Background="White">
<Grid>

@ -1,14 +1,8 @@
using System.Windows.Controls;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Media.Media3D;
using HelixToolkit.Wpf.SharpDX;
using SharpDX;
using SparkClient.Model.Entity;
using SparkClient.Model.Helper;
using SparkClient.ViewModel.Grading;
using GeometryModel3D = HelixToolkit.Wpf.SharpDX.GeometryModel3D;
using MeshGeometry3D = HelixToolkit.Wpf.SharpDX.MeshGeometry3D;
using PerspectiveCamera = HelixToolkit.Wpf.SharpDX.PerspectiveCamera;
namespace SparkClient.Views.Grading;
@ -125,4 +119,48 @@ public partial class GradingResult
var d = DataContext as GradingResultVM;
d.ChangeSym(null);
}
private void dataGrid_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
var dataGrid = sender as DataGrid;
var selectedItem = dataGrid.SelectedItem;
if (selectedItem != null)
{
// 获取选中行的可视化元素
var selectedRow = dataGrid.ItemContainerGenerator.ContainerFromItem(selectedItem) as DataGridRow;
if (selectedRow != null)
{
// 获取选中行第一列的坐标
// 获取选中行第一列的单元格内容
var firstCell = dataGrid.Columns[0].GetCellContent(selectedRow);
// 将 firstCell 的边界转换为屏幕坐标系
var firstCellBounds = firstCell.PointToScreen(new Point(0, 0));
// 计算Popup的位置
var popupPosition = new Point(firstCellBounds.X + firstCell.RenderSize.Width, firstCellBounds.Y + firstCell.RenderSize.Height + 15);
var selectObject = selectedItem as DataInfo;
string testItemId = selectObject.TestItemId;
var d = DataContext as GradingResultVM;
RowDetail rowDetail = d.getSelectData(testItemId);
// 设置Popup的位置
detailPopup.HorizontalOffset = popupPosition.X;
detailPopup.VerticalOffset = popupPosition.Y;
detailPopup.IsOpen = true;
RowDetail.Items.Clear();
RowDetail.Items.Add(rowDetail);
}
}
}
private void Window_MouseDown(object sender, MouseButtonEventArgs e)
{
detailPopup.IsOpen = false;
}
private void Window_MouseDown(object sender, RoutedEventArgs e)
{
detailPopup.IsOpen = false;
}
}
Loading…
Cancel
Save